如何在django模板标签中使用带有额外参数的反向URL?

时间:2017-03-08 01:29:38

标签: python django django-templates

我在django中为只需要提交按钮的表单创建了一个模板标签,没有任何其他字段(隐藏的csrf字段除外)。它可以使用如下:

{% button_only_form "button_text" "action/path" "optionally css classes. %}

我目前主要用于删除按钮,因为删除视图需要发送帖子请求,但不需要任何其他数据。

现在我发现自己处于需要动态创建动作的情况。我正在迭代一个项目列表,每个项目的操作网址都是调用reverse("items:delete", kwargs={"item_id": item.id})

的结果

我如何为我的模板标签指定这个?这是我的模板的一个非常简化的版本:

<ul>
  {% for item in items %}
    <li>
      {{item.title}} - {% button_only_form "Delete" Im_not_sure_how_to_pass_the_action %}
    </li>
  {% endfor %}
</ul>

1 个答案:

答案 0 :(得分:1)

您可以使用{% url ... as var %}语法首先为操作创建网址,然后将其作为参数传递给button_only_form标记:

<ul>
  {% for item in items %}
    <li>
      {% url "items:delete" item_id=item.id as del_url %} 
      {{item.title}} - 
      {% button_only_form "Delete" del_url "..." %}
    </li>
  {% endfor %}
</ul>