我正在開發需要多個參數的自定義Django模板標籤。其中一個參數是URL。當我嘗試這樣做:將{%url%}傳遞給Django中的自定義模板標籤
{% my_tag arg1 {% url "myview" %} arg3=5 %}
我得到了下面的模板語法錯誤:Could not parse the remainder: '{%' from '{%'
我怎樣才能通過一個URL到自定義模板?
我正在開發需要多個參數的自定義Django模板標籤。其中一個參數是URL。當我嘗試這樣做:將{%url%}傳遞給Django中的自定義模板標籤
{% my_tag arg1 {% url "myview" %} arg3=5 %}
我得到了下面的模板語法錯誤:Could not parse the remainder: '{%' from '{%'
我怎樣才能通過一個URL到自定義模板?
簡單的url標籤支持分配。
{% url 'myview' as my_url %}
{% my_tag arg1 my_url arg3=5 %}
如果有人真的想要得到這個工作,而不必在thier模板大量的垃圾我發現,你可以簡單地在你的tag function
使用django.urls.reverse例如,在您的標籤功能:
from django.urls import reverse
@register.simple_tag
def my_tag(arg1, url, arg3 = None, *args, **kwargs):
# resolve the url (you don't have to pass both args and kwargs, it's up to you.)
resolved_url = reverse(url, None, args, kwargs)
# do whatever you have to do
pass
在模板簡單地傳遞,你會傳似{% url 'myview' %}
字符串:
{% my_tag arg1 'myview' arg3=5 %}
或
{% my_tag arg1 'myapp:myview' arg3=5 %}
通過使指定參數和/或沿kwargs可以傳遞額外PARAMS扭轉(例如像一個主鍵)。
{% # here the article.pk is passed to reverse # %}
{% my_tag arg1 'myapp:myview' arg3 article.pk %}
Oy,這是醜陋的。但它確實有效。謝謝! – zmbq