【问题标题】:Include a menu to several templates in Django在 Django 中包含多个模板的菜单
【发布时间】:2017-09-18 20:34:46
【问题描述】:

我试图不在不同的模板上两次编写相同的代码。更改某些内容时真的很麻烦。

所以当我转到网页的某个部分时,我想显示一个侧边菜单。这个侧面菜单应该在几个模板上。比如index.html、detail.html、manage.html等等。

但是该部分只是网页的一部分,所以我不能在base.html中。

我正在考虑使用包含。但是由于侧面菜单依赖于要生成的数据库查询,所以我必须对每个视图进行查询。这也会产生冗余代码。

此功能的最佳做法是什么?

干杯!

【问题讨论】:

    标签: python django templates view


    【解决方案1】:

    您可以编写自定义inclusion_tag,这对于该场景更可行:

    my_app/templatetags/my_app_tags.py

    from django import template
    
    register = template.Library()
    
    @register.inclusion_tag('side_menu.html')
    def side_menu(*args, **kwargs):
        # prepare context here for `side_menu.html`
        ctx = {}
        return ctx
    

    然后在您想要包含侧边菜单的任何模板中执行以下操作:

    {% load side_menu from my_app_tags %}
    
    {% side_menu %}
    

    【讨论】:

      猜你喜欢
      • 2013-10-02
      • 2017-01-05
      • 1970-01-01
      • 2018-04-20
      • 2019-05-24
      • 2016-04-07
      • 2013-09-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多