簡體   English   中英

如何將urlname作為變量傳遞給Django中的url標簽

[英]How to pass urlname as a variable to url tag in django

我在應用程序的urls.py中定義了一個url

urlpatterns = [
    url(r'^group/create', create_group, name='create_group'),
    url(r'^account/create', create_account, name='create_account'),
]

上下文包含

{'buttons': {'create_account': {'btn_text': 'Create Account',
                                'secondary': 'Add a new accounting ledger',
                                'url': 'create_account'}}

我應該如何在模板中使用url。

{% for button in buttons %}
    <li class="collection-item">
    <div>
        {% with btn_url=button.url %}
            <a class="btn" href="{% url btn_url %}">{{ button.btn_text }}</a>
        {% endwith %}
        <span class="black-text">{{ button.secondary }}</span>
    </div>
    </li>
{% endfor %}

模板中的以上代碼拋出

Reverse for '' with arguments '()' and keyword arguments '{}' not found. 0 pattern(s) tried: []

如何將url名稱作為變量傳遞到url模板標記中? 或者,如果我應該如何在視圖本身中生成整個URL,該如何生成URL?

我個人認為這是不可能的。 我建議您在views.py中使用reverse來首先解釋URL,然后將解釋后的結果傳遞給模板:

from django.core.urlresolvers import reverse
url = reverse('create_account')
# add url to your context

根據django docsreverse將具有與您在模板中使用url模板標記相同的結果。

在您的上下文中, buttons是一個字典,因此通過{% for button in buttons %}循環將僅循環通過字典的鍵,即['btn_text',]

您可能想遍歷項目或值:

{% for key, value in buttons.items %}
<a class="btn" href="{% url value.btn_url %}">{{ value.btn_text }}</a>
{% endfor %}

或者,如果不需要鍵,則可以遍歷值

{% for value in button.values %}
<a class="btn" href="{% url value.btn_url %}">{{ value.btn_text }}</a>
{% endfor %}

請注意,字典沒有順序。 如果您擔心字典中項目的順序,請使用其他數據結構,如列表或有序字典。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM