【问题标题】:Compositional Templates Django组合模板 Django
【发布时间】:2014-07-29 07:42:31
【问题描述】:

创建模块化模板的最佳方法是什么?

例如,如果我有这样的事情:

#base file:
{header}
{block content}
{footer}

#main file:
{extends base}
{block content definition}

#product file:
{extends base}
{block content definition}

这是我所理解的 django 方式 - 填补空白。

现在,我的问题是如果我需要这样的页面:

{header}
{main}
{product}
{footer}

基本上,main 和 product 都在基本文件中。我可以尝试深度继承(具有主页面,然后连续加载产品)但这不起作用,因为文件都定义了“内容”,这在 Django 中是不可能的

【问题讨论】:

    标签: django python-3.x


    【解决方案1】:

    你需要做两个模板“_main.html”和“_product.html”,它们不扩展基础,只是它们自己的内容。

    之后你可以通过包含标签https://docs.djangoproject.com/en/dev/ref/templates/builtins/#include使用它们

    #main.html file:
    {% extends 'base.html' %}
    {% block content %}
        {% include '_main.html' %}
    {% endblock %}
    
    #product.html file:
    {% extends 'base.html' %}
    {% block content %}
        {% include '_product.html' %}
    {% endblock %}
    
    #and what you want:
    {% extends 'base.html' %}
    {% block content %}
        {% include '_main.html' %}
        {% include '_product.html' %}
    {% endblock %}
    {% block footer %}
    {% endblock %}
    

    【讨论】:

    • 呃。我想象它会像这样肮脏:/
    猜你喜欢
    • 2011-08-16
    • 1970-01-01
    • 2015-09-13
    • 2017-01-09
    • 2020-11-06
    • 1970-01-01
    • 2017-04-03
    • 2013-12-31
    • 2010-12-01
    相关资源
    最近更新 更多