賦值

2013-04-25 83 views
10

在我的Django的模板,我需要分配一個名稱的值URL到一個變量內有塊這樣我就可以在多個地方使用它。賦值

我需要實現這樣的事情:

{% for tag in post.tags.all %} 
    {% with tagabs={%url showtag tag%} %} 
      <li><a href="{{tagabs}}">#{{tag}}</a></li> 
    {% endwith %} 
{% endfor %} 

但顯然不工作,並最終會解析錯誤。上面的例子是一個簡單的場景,我可能只是有{%URL showtag標籤%},而不是{{tagabs}}與塊取出。但在我的情況下,我需要在多個地方和if語句中使用tagabs值來進行比較。

感謝您的幫助。

+0

你能給出更大的問題,請稍微更多信息? – rockingskier 2013-04-25 16:14:14

回答

31

爲什麼如果該功能核心創建一個新的模板標籤/過濾器?

在看樣品:https://docs.djangoproject.com/en/dev/ref/templates/builtins/#url

{% url 'path.to.view' arg arg2 as the_url %} 

<a href="{{ the_url }}">I'm linking to {{ the_url }}</a> 

{% url 'path.to.view' as the_url %} 
{% if the_url %} 
    <a href="{{ the_url }}">Link to optional stuff</a> 
{% endif %} 
+0

優秀的建議,絕對比新標籤更優雅。謝謝! – 2013-04-25 17:42:37

-4

我認爲你必須創建自己的template tag來管理這個問題,或者在視圖中創建必要的數據,並把它傳遞到模板。

取決於你想要什麼做的,也許including另一個模板,並在您定義的變量發送能做到這一點,但我對此表示懷疑。

背後Django的模板系統的想法是讓它所以沒有在模板中非常邏輯。因此它回到了準備視圖中輸出所需的數據或製作模板標籤。

+0

爲什麼重新發明輪子時,url標籤已經做好了這項工作? – 2013-04-25 20:23:43

+0

因爲我理解這個問題的方式並不符合我所知道的任何核心行爲。它給我帶來的方式是有人試圖在視圖中進行復雜的操作,而不僅僅是簡單地命名一個URL。 – gaqzi 2013-04-25 23:32:42