Пользовательские теги включения Django - PullRequest
5 голосов
/ 03 марта 2010

Я пытаюсь создать свой собственный шаблон тегов. Я понятия не имею, почему я получаю эти ошибки. Я следую за документами 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 %}

Но тогда я получаю ошибку:

Exception Value: Caught an exception while rendering: show_pollquiz.html

Понятия не имею, почему это происходит. Есть идеи? Пожалуйста, имейте в виду, что я все еще новичок в Джанго

Ответы [ 4 ]

8 голосов
/ 03 марта 2010

Разве все пользовательские фильтры не должны находиться внутри каталога templatetags?

templatetags/
    __init__.py
    showpollquiz.py

тогда

@register.inclusion_tag('show_pollquiz.html')

ищет в MY_TEMPLATE_DIR / show_pollquiz.html шаблон

3 голосов
/ 03 марта 2010

Вы забыли закрыть теги шаблона ... Кроме того, вы должны изменить имя в теге for, у вас не может быть for poll in poll:

<ul>
{% for p in poll %} <!--here-->
    <li>{{ p.pollquiz }}</li>
{% endfor %} <!--and here-->
</ul>

Также обратите внимание, что вы вообще не используете тег включения, который вы определили. Я думаю, что вы перепутали некоторый код, попробуйте просмотреть учебник начать и закончить, и все станет яснее.

0 голосов
/ 03 марта 2010

Я нашел проблему. Проблема заключалась в том, что @ register.inclusion_tag ('show_pollquiz.html') Тег включения явно ищет шаблон в каталоге default_template. Вот почему я получил ошибку.

По мне, это не ясно в документации. Но я думаю, это так, как шаблон, и все ...

О, хорошо.

Теперь, как бы я поместил @ register.inclusion_tag ('show_pollquiz.html') для просмотра в той же папке, что и приложение? под templatetags /?

0 голосов
/ 03 марта 2010

Я бы не стал писать собственные теги шаблонов: делайте шаг за шагом и пока придерживайтесь основ. Нет ничего плохого в {% include 'show_pollquiz.html' %}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...