我正在尝试创建一个小的工作板,每个工作卡都是从列表中的flask动态插入的(目前,稍后将是SQL DB)
当用户单击按钮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'] }})"
不起作用,有办法吗?
答案 0 :(得分:2)
您生成了输出href="url_for('view_task', task_id=<some id>)"
,因此文字文本url_for(..)
在生成的HTML中并传递到您的浏览器,并且HTML引擎无法将该字符串识别为任何内容的有效URL。 / p>
您需要将url_for()
函数放在{{ ... }}
括号中,而不仅仅是任务ID值:
href="{{ url_for('view_task', task_id=task['id']) }}"
只有url_for()
实际上被视为Jinja2执行的表达式,此时HTML产生的将包含href="http://localhost:5000/view_task/<some id>"
字符串。