[英]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 docs , reverse
將具有與您在模板中使用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.