我用django(來自Grails)推出了新特性,特別是您必須處理的所有自定義標籤,而不是直接在模板中編寫變量。Django自定義標籤'takes_context'
嗯,我需要做的事情非常簡單,但由於某種原因,我花了很長時間才完成。我想要做的是製作一個標籤,檢查給定的路徑是否等於我的當前網址,然後返回該類如果爲true。
<li class="{% check_url '/login/' 'current_page_item' %}">
<a href="{% url social_login %}">login</a>
</li>
但是,問題來了,當我試圖用takes_context註冊標籤:
陷入類型錯誤而渲染:simple_tag()得到了一個意想不到的關鍵字參數 'takes_context'
from django import template
register = template.Library()
@register.simple_tag(takes_context=True)
def check_url(context, path, attr):
if context['request'].environ.get('PATH_INFO') == path:
return attr
else:
return ''
我該如何解決它?另外,有沒有更好的方法來做到這一點?
你使用hte最新的開發版本的django(1.3.x?)或穩定的1.2.x?如果是這樣,您不能以這種方式使用simple_tag - http://docs.djangoproject.com/en/dev/howto/custom-template-tags/。一個簡單的快速方法可能是做一些像{%ifequal request.get_full_path'/ login /'%} class =「current_page」{%endif%}。 – user608133 2011-03-08 20:44:32
我使用的是django 1.2.5,我之前嘗試過使用快捷方式,但我將其移動到自定義標籤以獲得清晰視圖。這個takes_context只適用於inclusion_tag(不是我想要的) – mateusmaso 2011-03-08 20:50:42