Найти - Пользователи
Полная версия: Помогите новичку с templatetags
Начало » Django » Помогите новичку с templatetags
1 2
DeepHill
Пытаюсь добавить templatetags (для вывода списка категорий):
templatetags/extra.py

from django import template
from vikblog.blog.models import *

register = template.Library()


def cat (CatPost):
cats=CatPost.objects.all()
return {'cat': cats}


register.inclusion_tag('cat.html')(cat)
cat.html
{% extends "base.html" %}
{% block cat %}
{% for cat in cats %}
<h2>{{ cat.title }}</h2>
{% endfor %}
{% endblock %}
base.html
<body>
<h1>Blog</h1>
{% load extra %}
{% cat cats %}
{% block cat %}
{% endblock %}
{% block content %}
{% endblock %}
</body>
Получаю ошибку: Caught VariableDoesNotExist while rendering: Failed lookup for key in u""
gruy
return {'cat': cats}
{% for cat in cats %}
Разберись с именами переменных.
DeepHill
Попробывал так:
from django import template
from vikblog.blog.models import *

register = template.Library()


def cat_list (CatPost):
cats=CatPost.objects.all()
return {'cats': cats}


register.inclusion_tag('cat.html')(cat_list)

{% load extra %}
{% cat_list CatPost %}

% for cat in cats %}
<h2>{{ cat.title }}</h2>
{% endfor %}
Анологично: Caught VariableDoesNotExist while rendering: Failed lookup for key in u""
mks
На всякий случай проверьте все ли пробелы присутствуют в функции cat_list
gruy
def cat_list (CatPost):
...
{% cat_list CatPost %}
Зачем здесь имя класса модели?
DeepHill
gruy
def cat_list (CatPost):
...
{% cat_list CatPost %}
Зачем здесь имя класса модели?
Иначе возникает ошибка: Caught ValueError while rendering: invalid literal for float(): cats
Наверное я что-то недопонемаю, немог ли бы кто-либо подсказать на примере?
DeepHill
mks
На всякий случай проверьте все ли пробелы присутствуют в функции cat_list
присутсвуют…
stqs
DeepHill
Иначе возникает ошибка: Caught ValueError while rendering: invalid literal for float(): cats
Наверное я что-то недопонемаю, немог ли бы кто-либо подсказать на примере?
Все примеры в документации. А у вас какойто страгный случай. Не нужно передавать параметром темплейттегу название класса. Зачем? И вообще темплейттег ваш поидее никаких параметров не требует. Удалите и, если есть ошибка, выложите полный код. И полный трейсбек
DeepHill
stqs
DeepHill
Иначе возникает ошибка: Caught ValueError while rendering: invalid literal for float(): cats
Наверное я что-то недопонемаю, немог ли бы кто-либо подсказать на примере?
Все примеры в документации. А у вас какойто страгный случай. Не нужно передавать параметром темплейттегу название класса. Зачем? И вообще темплейттег ваш поидее никаких параметров не требует. Удалите и, если есть ошибка, выложите полный код. И полный трейсбек
вот весь код:

#templatetags/extra.py
from django import template
from vikblog.blog.models import *

register = template.Library()

def cats():
cats = CatPost.objects.all()
return {'cats': cats}

register.inclusion_tag('cat.html')(cats)

#cat.html
{% extends "base.html" %}
{% block cat %}
{% for cat in cats %}
<h2>{{ cat.title }}</h2>
{% endfor %}
{% endblock %}

#base.html
<body>
<h1>Blog</h1>
{% load extra %}
{% cats %}
{% block cat %}
{% endblock %}
{% block content %}
{% endblock %}
</body>
Traceback
http://pastebin.com/shGEp1n9
DeepHill
Проблему так и не решил неужели никто не может помочь? :-(
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB