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
  }
)