Django:如何在包含模板标签中正确传递URL?

Dav*_* D. 1 python django django-templates

在两个不同的模板中,我有两个几乎相同的块,只是 url 不同:

模板1.html

<div class="col-sm-4">
    <a href="{% url 'bo:article-list' %}" class="btn btn-block btn-secondary btn-sm"
       role="button">
        <i class="fa fa-chevron-left"></i> Annuler
    </a>
</div>
Run Code Online (Sandbox Code Playgroud)

模板2.html

<div class="col-sm-4">
    <a href="{{ article.get_absolute_url }}" class="btn btn-block btn-secondary btn-sm"
       role="button">
        <i class="fa fa-chevron-left"></i> Annuler
    </a>
</div>
Run Code Online (Sandbox Code Playgroud)

我想让这个变得干燥,创建一个模板,然后进行包含。例如:

_cancel.html

<div class="col-sm-4">
<a href="{{ cancel_url }}" class="btn btn-block btn-secondary btn-sm"
   role="button">
    <i class="fa fa-chevron-left"></i> Annuler
</a>
Run Code Online (Sandbox Code Playgroud)

对于template2.html,它将与:

{% include 'includes/_cancel.html' with cancel_url=article.get_absolute_url %}
Run Code Online (Sandbox Code Playgroud)

但是template1.html呢?这显然不起作用:

{% include 'includes/_cancel.html' with cancel_url={% url 'bo:article-list' %} 
Run Code Online (Sandbox Code Playgroud)

我想有一个技巧。感谢您的帮助 :)

Dan*_*man 6

url标签可用于通过使用将其结果保存到上下文变量中as

{% url 'bo:article-list' as cancel_url %}
Run Code Online (Sandbox Code Playgroud)

现在您可以将其传递到您的包含标签中。