Я пытаюсь создать свои собственные теги шаблона. Я понятия не имею почему я получающий эти ошибки. Я следую документу Django.
Это - файловая структура моего приложения:
pollquiz/
__init__.py
show_pollquiz.html
showpollquiz.py
Это - showpollquiz.py:
from django import template
from pollquiz.models import PollQuiz, Choice
register = template.Library()
@register.inclusion_tag('show_pollquiz.html')
def show_poll():
poll = Choice.objects.all()
return { 'poll' : poll }
файл HTML:
<ul>
{% for poll in poll
<li>{{ poll.pollquiz }}</li>
{% endfor
</ul>
в моем файле base.html я, включаю как это
{% load showpollquiz %}
and
{% poll_quiz %}
Bu затем я получаю ошибку:
Exception Value: Caught an exception while rendering: show_pollquiz.html
Я понятия не имею, почему это происходит. Какие-либо идеи? Следует иметь в виду, что я являюсь все еще новым в Django
Разве все пользовательские фильтры не должны находиться в каталоге тегов шаблонов?
templatetags/
__init__.py
showpollquiz.py
затем
@register.inclusion_tag('show_pollquiz.html')
ищет в MY_TEMPLATE_DIR / show_pollquiz.html шаблон
Вы забыли закрыть теги шаблона... Также, вам следует изменить имя в теге for
, вы не можете иметь for poll в poll
:
<ul>
{% for p in poll %} <!--here-->
<li>{{ p.pollquiz }}</li>
{% endfor %} <!--and here-->
</ul>
Также обратите внимание, что вы вообще не используете тег включения, который вы определили. Я думаю, вы перепутали код, попробуйте пройти учебник от начала до конца, и все станет яснее.
Я обнаружил проблему. Проблема заключалась в том, что тег включения @ register.inclusion_tag ('show_pollquiz.html') явно ищет шаблон в каталоге default_template. Вот почему я получил ошибку.
На мой взгляд, это неясно в документации. Но я предполагаю, что это так, быть шаблоном и все такое ...
Ну, хорошо.
Теперь, как мне поместить @ register.inclusion_tag ('show_pollquiz.html') для просмотра в той же папке, что и приложение? под тегами шаблонов /?
Я бы не стал утруждать себя написанием ваших собственных тегов шаблонов: делайте все по шагам и пока придерживайтесь основ. Нет ничего плохого в {% include 'show_pollquiz.html'%}