如何在Flask中使用url_for中的变量?

1 投票
1 回答
1245 浏览
提问于 2025-04-17 23:34

我正在用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)
    ...

撰写回答