开发者

Django Custom Inclusion Tags

开发者 https://www.devze.com 2022-12-21 15:40 出处:网络
I\'m trying to build my own template tags. I have no idea why I getting these errors. I\'m following the Django doc\'s.

I'm trying to build my own template tags. I have no idea why I getting these errors. I'm following the Django doc's.

This is my app's file structure:

pollquiz/
    __init__.py
    show_pollquiz.html
    showpollquiz.py

This is 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 file:

<ul>
{% for poll in poll 
    <li>{{ poll.pollquiz }}</li>
{% endfor 
</ul>

in my base.html file im am including like this

{% load showpollquiz %}
and
{% poll_quiz %}

Bu then I get the the error:

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

I h开发者_运维技巧ave no idea why this happens. Any ideas? Please keep in mind I'm still new at Django


Shouldn't all custom filters be inside the templatetags directory?

templatetags/
    __init__.py
    showpollquiz.py

then

@register.inclusion_tag('show_pollquiz.html')

looks in MY_TEMPLATE_DIR/show_pollquiz.html for the template


You forgot to close your template tags... Also, you should change the name in the for tag, you can't have for poll in poll:

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

Also notice you're not using the inclusion tag you defined at all. I think you got some code mixed up, try to go over a tutorial start to end and things will be clearer.


I'd not bother with writing your own template tags: take things one step at a time and stick to the basics for now. There's nothing wrong with {% include 'show_pollquiz.html' %}


I found the problem. The problem was that the @register.inclusion_tag('show_pollquiz.html') inclusion tag is obviously looking for the template in the default_template directory. So that is why i got the error.

According to me this is not clear in the documentation. But I guess its how it is, being a template and all...

Oh , well.

Now, how would I put the @register.inclusion_tag('show_pollquiz.html') to look in the same folder as the app? under templatetags/?

0

精彩评论

暂无评论...
验证码 换一张
取 消