首页 > 解决方案 > 将变量附加到 {% url 'app_name:viewname' %} 的语法

问题描述

如何将变量附加到模板中的 url 名称,例如:

{% for table in tables %}
      <a href="{% url 'menu:menu_view' %}">
        <button class="button table{{table.pk}}">Table {{table.pk}}</button>
      </a>
{% endfor %}

作为table.pk计数器(从视图函数传入),我想将其标记为,menu:menu_view以便我可以拥有menu:menu_view1,menu:menu_view2等。

然后我可以将我的命名urlpatterns如下:

path('<int:table.pk/', views.menu_view, name='menu_view' + str(table.pk)),

标签: djangodjango-templates

解决方案


{% url … %}模板标签 [Django-doc]接受任意数量的位置和命名参数来解析 url 。

如果您因此命名路径:

path('<int:table_pk>/', views.menu_view, name='menu_view'),

您可以使用:

{% url 'menu_view' 2 %}                   /2/
{% url 'menu_view' table_pk=4 %}          /4/
{% url 'menu_view' table.pk %}
{% url 'menu_view' table_pk=table.pk %}

因此,您可以将参数传递给{% url … %}模板标签,然后将这些参数填写在 URL 中。


推荐阅读