[英]Django template filter not registered after django dev server restart
我花了太多時間獨自嘗試解決問題,也許這里有人可以幫助我。 我正在構建一個較大的django應用程序,但刪除了所有突出顯示該問題的代碼,但所有內容均被刪除。
我定義了兩個自定義模板標簽:
edb / templatetags / edb_extra.py:
register = template.Library()
@register.inclusion_tag('edb/templatetags/event_tile.html')
def render_event_tile(event):
return {'event':event}
@template.defaulttags.register.filter
def get_item(dictionary, key):
return dictionary.get(key)
與鏈接的html edb / templatetags / event_tile.html:
<div>
<h5> RENDER: {{ event.name }} </h5>
</div>
我通過edb / views.py服務請求:
@login_required
def my_view(request):
events = Event.objects.all()
myevent = events[0]
sorted_events = {'mykey': myevent}
return render(request, "edb/using_tags.html", {'sorted_events':sorted_events, 'event':myevent})
最后是edb / using_tags.html:
{% load edb_extra %}
<!doctype html>
<head>
<meta charset="utf-8">
</head>
<body>
<div class="main-panel">
{% render_event_tile event %}
{{ sorted_events|get_item:'mykey' }}
</div>
</body>
</html>
django dev服務器重新啟動后第一次處理時,此代碼會產生以下錯誤消息:
TemplateSyntaxError at en/edb/using_tags
Invalid filter: 'get_item'
當我按下瀏覽器的后退按鈕並重復該請求時,它運行正常。 對於所有后續請求,它也可以正常工作,直到需要重新啟動服務器(例如,我更改視圖代碼)。
此外,如果我刪除{{ sorted_events|get_item:'mykey' }}
,那么一切從一開始就可以正常工作,因此edb_extra.py似乎已經得到了正確的處理。 但是以某種方式注冊了include_tag而沒有注冊filter。
嘗試在裝飾器中使用register
模板庫:
@register.filter
def get_item(dictionary, key):
return dictionary.get(key)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.