如何在Flask中使用url_for中的变量?
我正在用Flask创建一个待办事项列表,但遇到了一些问题。
在我的一个主要页面上,当你点击想要的任务类型时,它会这样做:
<a href={{url_for('add_task_type', task_type=type)}}>{{task_types[type]}}</a>
这会转到:
http://127.0.0.1:5000/add_task_type?task_type=1
这应该把你带到下面的页面:
@app.route('/add_task_type', methods=['GET', 'POST'])
def add_task_type():
all_tasks = Task.query.all()
number = len(all_tasks)
task_db = Task(id = number, type=task_type, creator = 235026, time=20)
db.session.add(task_db)
db.session.commit()
return redirect('/index')
但是我遇到了一个错误,提示NameError: global name 'task_type' is not defined。为什么'task_type'没有定义呢?它不是在网址里吗?这样传递变量到其他页面是错的吗?
1 个回答
3
根据你的网址:
http://127.0.0.1:5000/add_task_type?task_type=1
task_type
是一个 GET
参数,它在 request
中,你可以在你的 add_task_type
视图中通过以下方式访问它:
request.args.get("task_type")
所以把 add_task_type
视图改成:
from flask import request
def add_task_type():
...
task_type = request.args.get("task_type")
task_db = Task(id = number, type=task_type, creator = 235026, time=20)
...