Get It Done! Part 3: Using Persistent Classes in Flask
Notes
In this lesson we'll refactor the Python and HTML in our Get It Done! app to use the database we just set up.
Refactor to Use Task Object
First remove these two lines from your main.py: tasks = [] and tasks.append(task). Then amend todos.html by changing <li> as follows: <li>{{task.name}}</li>.
Now alter the index function as follows:
if request.method == 'POST':
task_name = request.form['task']
new_task = Task(task_name)
db.session.add(new_task)
db.session.commit()
tasks = Task.query.all()
Delete Data from Database
Add a form under the <li> in todos.html to make a POST request:
<form action="/delete-task" method="POST" style="display:inline-block;">
<input type="hidden" name="task-id" value="{{task.id}}" />
<input type="submit" value="Done!" />
</form>
Make a new request handler for /delete-task:
@app.route('/delete-task', methods=['POST'])
def delete_task():
task_id = int(request.form['task-id'])
task = Task.query.get(task_id)
db.session.delete(task)
db.session.commit()
return redirect('/')
Code
View the final code for this lesson.