Flask/Jinja:有没有办法在 Python 调用中使用 Jinja 变量作为参数名称?
Flask/Jinja: Is there a way to use a Jinja variable as a parameter name in a Python call?
我在 HTML 文件中有以下内容:
{% for ctype in course.sections %}
{% for instr in course.instructors[ctype] %}
...
<a class="dropdown-item"
href="{{ url_for(
'views.get_results',
user=current_user,
user_query=userQuery,
ctype=instr
) }}">
{{ instr }}
</a>
...
我在页面的各个部分填充下拉菜单(见图),并希望使用 ctype
(在外循环中设置)作为参数名称(例如,REC=Aghli,+Sina
).本质上,我试图找到
在语法上正确的等价物
url_for('views.get_results',
user=current_user,
user_query=userQuery,
{{ctype}}=instr
)
请注意 instr
似乎已经从 for 循环中提取它的值,所以我不确定如何告诉 Jinja 我也想使用模板化变量作为参数名称。目前,我得到一个 url 像 ...ctype=Ashli,+Sina...
(只是逐字传递名为 ctype
的参数)。感谢您的帮助 - 如果我能澄清任何问题,请告诉我!
因为这一切都归结为 "Is it possible to pass a keyword argument where the keyword is a variable to a function in Python?",答案基本相同:是的,使用字典并用 **dict
传递它。
所以在你的情况下,你可以这样做:
url_for(
'views.get_results',
**{
'user': current_user,
'user_query': userQuery,
ctype: instr
}
)
我在 HTML 文件中有以下内容:
{% for ctype in course.sections %}
{% for instr in course.instructors[ctype] %}
...
<a class="dropdown-item"
href="{{ url_for(
'views.get_results',
user=current_user,
user_query=userQuery,
ctype=instr
) }}">
{{ instr }}
</a>
...
我在页面的各个部分填充下拉菜单(见图),并希望使用 ctype
(在外循环中设置)作为参数名称(例如,REC=Aghli,+Sina
).本质上,我试图找到
url_for('views.get_results',
user=current_user,
user_query=userQuery,
{{ctype}}=instr
)
请注意 instr
似乎已经从 for 循环中提取它的值,所以我不确定如何告诉 Jinja 我也想使用模板化变量作为参数名称。目前,我得到一个 url 像 ...ctype=Ashli,+Sina...
(只是逐字传递名为 ctype
的参数)。感谢您的帮助 - 如果我能澄清任何问题,请告诉我!
因为这一切都归结为 "Is it possible to pass a keyword argument where the keyword is a variable to a function in Python?",答案基本相同:是的,使用字典并用 **dict
传递它。
所以在你的情况下,你可以这样做:
url_for(
'views.get_results',
**{
'user': current_user,
'user_query': userQuery,
ctype: instr
}
)