2008-10-31 153 views
2

如何在django模板中的url templatetag中嵌入標籤?如何在django模板中的url模板標籤中嵌入標籤?

Django的1.0,Python的2.5.2

在views.py

def home_page_view(request): 
    NUP={"HOMEPAGE": "named-url-pattern-string-for-my-home-page-view"}  
    variables = RequestContext(request, {'NUP':NUP}) 
    return render_to_response('home_page.html', variables) 

在home_page.html,以下

NUP.HOMEPAGE = {{ NUP.HOMEPAGE }} 

顯示爲

NUP.HOMEPAGE = named-url-pattern-string-for-my-home-page-view 

以及名爲patter的以下url ñ的作品(如預期),

url template tag for NUP.HOMEPAGE = {% url named-url-pattern-string-for-my-home-page-view %} 

,並顯示爲

url template tag for NUP.HOMEPAGE = /myhomepage/ 

但當{{ NUP.HOMEPAGE }}嵌入一個{% url ... %}內如下

url template tag for NUP.HOMEPAGE = {% url {{ NUP.HOMEPAGE }} %} 

這導致模板語法錯誤

TemplateSyntaxError at /myhomepage/ 
Could not parse the remainder: '}}' from '}}' 
Request Method: GET 
Request URL: http://localhost:8000/myhomepage/ 
Exception Type: TemplateSyntaxError 
Exception Value:  
Could not parse the remainder: '}}' from '}}' 
Exception Location: C:\Python25\Lib\site-packages\django\template\__init__.py in __init__, line 529 
Python Executable: C:\Python25\python.exe 
Python Version: 2.5.2 

我期待{% url {{ NUP.HOMEPAGE }} %}在運行時解析爲{% url named-url-pattern-string-for-my-home-page-view %},並顯示爲/myhomepage/

django不支持嵌入標籤嗎?

是否可以使用嵌入式標籤支持編寫自定義網址模板標籤來實現此功能?

{% url {{ NUP.HOMEPAGE }} %}

+0

如果你點擊時顯示近「編輯」(如「30分鐘前」),你會得到很好的色差異 – kender 2008-10-31 21:28:18

回答

2

也許你可以嘗試將最終的URL傳遞給模板,而不是?

事情是這樣的:

from django.core.urlresolvers import reverse 

def home_page_view(request): 
    NUP={"HOMEPAGE": reverse('named-url-pattern-string-for-my-home-page-view')}  
    variables = RequestContext(request, {'NUP':NUP}) 
    return render_to_response('home_page.html', variables) 

然後在模板中,NUP.HOMEPAGE應的URL本身。

+0

感謝羅布麻,您的建議作出更簡單。 – e70 2008-11-01 08:26:55

0

這似乎太過於動態。你應該這樣做

{% url named-url-pattern-string-for-my-home-page-view %} 

而離開它。動態填寫URL標籤的名字是 - 坦率地說 - 有點奇怪。

如果你想使用的任何大量不同的網址代碼的,你必須做這樣的事情

{% if tagoption1 %}<a href="{% url named-url-1 %}">Text</a>{% endif %} 

這似乎囉嗦,因爲再次,動態的東西你試圖實現似乎有點奇怪。

如果您有類似於「家族」或「羣集」的頁面,也許單獨的模板目錄可能是一種更好的管理方法。每個頁面集羣都可以從基本模板繼承,並覆蓋像這種導航功能這樣的小東西,以保持集羣中的所有頁面看起來類似,但對於「本地主頁」具有一個導航區別。