【问题标题】:Mezzanine Blog Page Title not Displayed未显示夹层博客页面标题
【发布时间】:2013-12-21 14:25:18
【问题描述】:

我正在处理客户的 Django/Mezzanine 网站,该网站遇到了一些我似乎无法弄清楚的奇怪问题。在博客页面(blog_post_list.html 的模板)上,我无法获取要显示的页面的元标题,意思是

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

在生成的 html 中不产生任何输出。元描述也是如此,但我并不担心。奇怪的是,它似乎适用于单个博客条目,以及网站上的所有其他页面,除了博客列表。

有什么想法吗?

【问题讨论】:

    标签: html django blogs mezzanine


    【解决方案1】:

    如果渲染不存在的变量或变量值为无,则 Django 模板中不会显示任何内容。

    首先测试{{ blog_page }} 是否呈现任何内容。如果它不检查 blog_page 是否在您的模板上下文中。

    您可以通过编写简单的自定义模板标签来调试模板的上下文,例如:

    模板/your_template.html:

    {% load pdb from debug %}
    
    {% block meta_title %}
        {% pdb %}
        {{ blog_page.title }}  
    {% endblock %}
    

    模板标签/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()
    

    【讨论】:

    • 嗨 niekas,{{ blog_page }} 没有呈现任何内容,尽管博客列表模板中的更改反映得很好。如何检查它是否在模板上下文中?
    • 我在跟踪中收到三个警告,最相关的是:'/home/user/.virtualenvs/test/local/lib/python2.7/site-packages/mezzanine/blog/models .py:71: UserWarning: blog_post.category_list in templates is deprecateduse blog_post.categories.all which are prefetched warn("blog_post.category_list in templates is deprecated"'
    【解决方案2】:

    显然,这涉及到一些混乱:我认为 blog_page.title 是夹层中的标准变量,显然不是,它是由以前的开发人员创建的自定义模型。由于我基本上只有模板和数据库的转储,因此似乎无法恢复 blog_page 类的原始模型,所以我只是通过在 blog_post_list 模板中手动提供元标题来解决它。

    【讨论】:

      猜你喜欢
      • 2017-07-26
      • 1970-01-01
      • 1970-01-01
      • 2019-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-08
      相关资源
      最近更新 更多