Форум сайта python.su
0
Пытаюсь добавить 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)
{% extends "base.html" %}
{% block cat %}
{% for cat in cats %}
<h2>{{ cat.title }}</h2>
{% endfor %}
{% endblock %}<body>
<h1>Blog</h1>
{% load extra %}
{% cat cats %}
{% block cat %}
{% endblock %}
{% block content %}
{% endblock %}
</body>
Офлайн
0
return {'cat': cats}
{% for cat in cats %}Разберись с именами переменных.
Офлайн
0
Попробывал так:
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 %}
Офлайн
5
На всякий случай проверьте все ли пробелы присутствуют в функции cat_list
Офлайн
0
def cat_list (CatPost):
...
{% cat_list CatPost %}
Офлайн
0
gruyИначе возникает ошибка: Caught ValueError while rendering: invalid literal for float(): catsЗачем здесь имя класса модели?def cat_list (CatPost):
...
{% cat_list CatPost %}
Офлайн
0
mksприсутсвуют…
На всякий случай проверьте все ли пробелы присутствуют в функции cat_list
Офлайн
0
DeepHillВсе примеры в документации. А у вас какойто страгный случай. Не нужно передавать параметром темплейттегу название класса. Зачем? И вообще темплейттег ваш поидее никаких параметров не требует. Удалите и, если есть ошибка, выложите полный код. И полный трейсбек
Иначе возникает ошибка: Caught ValueError while rendering: invalid literal for float(): cats
Наверное я что-то недопонемаю, немог ли бы кто-либо подсказать на примере?
Офлайн
0
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>
Офлайн
0
Проблему так и не решил неужели никто не может помочь? :-(
Офлайн