0
我花了太多時間嘗試自行處理問題,也許有人在這裏能夠幫助我。我正在構建一個更大的django應用程序,但除了突出顯示問題的代碼之外,刪除了所有內容。Django模板過濾器未在django dev服務器重啓後註冊
我定義了兩個自定義模板標籤:
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正在按時正確處理。但不知怎的,包含_tag正在註冊,而過濾器沒有。
謝謝你,我花了幾個小時想看看發生了什麼,在10分鐘內得到了這裏的答案。有用。 – pegazik