使用Flask和SQLite构建一个简单的任务管理应用
Flask是一个基于Python的轻量级Web应用框架,而SQLite是一个嵌入式的关系型数据库引擎。我们可以使用Flask和SQLite来构建一个简单的任务管理应用,该应用允许用户添加、查看和删除任务。
首先,我们需要安装Flask和SQLite。可以使用下面的命令来安装它们:
pip install Flask
接下来,创建一个新文件app.py,并导入所需的模块:
from flask import Flask, render_template, request, redirect, url_for import sqlite3
我们需要创建一个Flask应用实例,并配置数据库连接:
app = Flask(__name__)
app.config['DATABASE'] = 'tasks.db'
def get_db_connection():
conn = sqlite3.connect(app.config['DATABASE'])
conn.row_factory = sqlite3.Row
return conn
def init_db():
conn = get_db_connection()
with app.open_resource('schema.sql', mode='r') as f:
conn.cursor().executescript(f.read())
conn.commit()
conn.close()
if __name__ == '__main__':
init_db()
app.run(debug=True)
上述代码中,我们定义了两个函数get_db_connection和init_db。
get_db_connection用于获取一个数据库连接,该函数会在每次需要访问数据库时调用。
init_db用于初始化数据库,该函数会在应用启动时调用。我们还在应用启动时调用init_db来创建数据库以及任务表。需要提供一个名为schema.sql的文件,用于定义数据库模式。
现在,我们可以定义一些路由和视图函数来处理请求。
首先,我们需要一个视图函数来显示所有的任务。我们可以将任务信息存储在一个tasks表中,该表包含id、title和description字段。下面是获取并显示所有任务的视图函数:
@app.route('/')
def index():
conn = get_db_connection()
tasks = conn.execute('SELECT * FROM tasks').fetchall()
conn.close()
return render_template('index.html', tasks=tasks)
在此函数中,我们首先获取数据库连接,然后使用SELECT语句从tasks表中获取所有任务。接下来,我们关闭数据库连接并将任务列表传递给模板index.html。
接下来,我们需要一个视图函数来添加新任务。该函数将提供一个表单用于输入任务的标题和描述。当用户提交表单时,我们将在数据库中插入新任务并将其重定向到任务列表页面。下面是添加任务的视图函数:
@app.route('/add', methods=['GET', 'POST'])
def add():
if request.method == 'POST':
title = request.form['title']
description = request.form['description']
conn = get_db_connection()
conn.execute('INSERT INTO tasks (title, description) VALUES (?, ?)',
(title, description))
conn.commit()
conn.close()
return redirect(url_for('index'))
return render_template('add.html')
在此函数中,我们首先检查请求的方法是否为POST。如果是,我们获取表单中的标题和描述,然后在数据库中插入新任务。最后,我们将用户重定向到任务列表页面。如果请求方法不是POST,则我们将显示一个包含任务添加表单的模板。
最后,我们需要一个视图函数来删除任务。该函数将根据任务的ID从数据库中删除任务,并将用户重定向到任务列表页面。下面是删除任务的视图函数:
@app.route('/delete/<int:id>', methods=['POST'])
def delete(id):
conn = get_db_connection()
conn.execute('DELETE FROM tasks WHERE id = ?', (id,))
conn.commit()
conn.close()
return redirect(url_for('index'))
在此函数中,我们首先获取任务的ID并在数据库中删除相应的任务。最后,我们将用户重定向到任务列表页面。
我们还需要创建两个模板index.html和add.html,来显示任务列表和任务添加表单。下面是一个简单的例子:
<!-- index.html -->
<!doctype html>
<html>
<head>
<title>Task Manager</title>
</head>
<body>
<h1>Task Manager</h1>
<h2>Tasks</h2>
<ul>
{% for task in tasks %}
<li>
{{ task['title'] }} - {{ task['description'] }}
<form action="{{ url_for('delete', id=task['id']) }}" method="post" style="display:inline;">
<button type="submit">Delete</button>
</form>
</li>
{% endfor %}
</ul>
<h2>Add Task</h2>
<form action="{{ url_for('add') }}" method="post">
<input type="text" name="title" placeholder="Title" required>
<input type="text" name="description" placeholder="Description" required>
<button type="submit">Add</button>
</form>
</body>
</html>
<!-- add.html -->
<!doctype html>
<html>
<head>
<title>Add Task</title>
</head>
<body>
<h1>Add Task</h1>
<form action="{{ url_for('add') }}" method="post">
<input type="text" name="title" placeholder="Title" required>
<input type="text" name="description" placeholder="Description" required>
<button type="submit">Add</button>
</form>
</body>
</html>
在以上示例中,我们在index.html中显示任务列表,并为每个任务创建一个删除按钮。对于添加任务,我们使用add.html模板。
最后,我们可以运行应用并在浏览器中访问http://localhost:5000来查看任务管理应用。
以上就是使用Flask和SQLite构建一个简单的任务管理应用的示例。通过这个应用,用户可以添加、查看和删除任务,使任务管理更加方便和高效。当然,这只是一个简单的示例,你可以根据自己的需求和喜好进行扩展和定制。
