使用url_for()将Flask变量从HTML发送回Flask

问题描述 投票:0回答:1

我正在尝试创建一个小工作板,每个工作卡都是从列表中的动态插入的(现在,以后将是一个SQL DB)

Screenshot

当用户单击按钮View Task时,我希望它转到另一个页面,在该页面中更详细地显示任务/作业。

我希望附加到该按钮的是作业/任务ID。

这就是我希望/期望按钮运行的方式

{% for task in available_tasks %}
<div>
   <a href="{{ url_for('view_task', task_id={{ task['id'] }}) }}">View Task</a>
</div>
{% endfor %}

然后可以将其粘贴到一个路径中,该路径将ID作为参数并获取完整的作业/任务信息。

app.route('/view_task/<task_id>')
def view_task(task_id):
   task_data = task_database[taskid]
   return render_template('detailed_view.html', task_info=task_data)

我的问题是href="url_for('view_task', task_id={{ task['id'] }})"不起作用,有没有办法做到这一点?

python flask jinja2
1个回答
2
投票

您生成了输出href="url_for('view_task', task_id=<some id>)",因此文本文本url_for(..)位于生成的HTML中并传送到您的浏览器,并且HTML引擎无法将该字符串识别为任何内容的有效URL。

你需要将url_for()函数放在{{ ... }}括号中,而不仅仅是任务id值:

href="{{ url_for('view_task', task_id=task['id']) }}"

只有这样才将url_for()视为执行Jinja2的表达式,此时HTML生成的将包含href="http://localhost:5000/view_task/<some id>"字符串。

© www.soinside.com 2019 - 2024. All rights reserved.