2014-04-02 114 views
1

我正在開發需要多個參數的自定義Django模板標籤。其中一個參數是URL。當我嘗試這樣做:將{%url%}傳遞給Django中的自定義模板標籤

{% my_tag arg1 {% url "myview" %} arg3=5 %} 

我得到了下面的模板語法錯誤:Could not parse the remainder: '{%' from '{%'

我怎樣才能通過一個URL到自定義模板?

回答

5

簡單的url標籤支持分配。

{% url 'myview' as my_url %} 
{% my_tag arg1 my_url arg3=5 %} 
+0

Oy,這是醜陋的。但它確實有效。謝謝! – zmbq

1

如果有人真的想要得到這個工作,而不必在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 %} 
相關問題