Я работаю над клиентским веб-сайтом Django / Mezzanine, у которого есть странная проблема, которую я просто не могу понять. На странице блога (шаблон blog_post_list.html) я не могу получить мета-заголовок страницы для отображения, то есть

{% block meta_title %}
{{ blog_page.title }}  
{% endblock %}

В итоговом HTML-коде не выводится. То же самое и с метаописанием, но меня это не беспокоит. Странно то, что, похоже, он отлично работает для отдельных записей в блогах, а также для всех других страниц на веб-сайте, кроме списка блогов.

Любые идеи?

1
Werdok 21 Дек 2013 в 18:25

2 ответа

Лучший ответ

По-видимому, возникла небольшая путаница: я думал, что blog_page.title - это стандартная переменная в мезонине, по-видимому, это не так, это была пользовательская модель, созданная предыдущим разработчиком. Поскольку в основном у меня есть только шаблоны и дамп БД, восстановить исходную модель для класса blog_page не представляется возможным, поэтому я просто решил это, указав мета-заголовок вручную в шаблоне blog_post_list.

0
Werdok 22 Дек 2013 в 01:06

В шаблоне Django ничего не отображается, если вы визуализируете несуществующую переменную или значение переменной равно None.

Сначала проверьте, отображает ли что-нибудь {{ blog_page }}. Если он не проверяет, находится ли blog_page в контексте вашего шаблона.

Вы можете отлаживать контекст шаблона, написав простой настраиваемый тег шаблона, например:

Templates / your_template.html:

{% load pdb from debug %}

{% block meta_title %}
    {% pdb %}
    {{ blog_page.title }}  
{% endblock %}

Templatetags / debug.py:

from django import template
register = template.Library()

@register.simple_tag(name='pdb', takes_context=True)
def pdb(context, *args, **kwargs):
    import ipdb;
    ipdb.set_trace()
1
niekas 21 Дек 2013 в 14:43