加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – django模板包括

发布时间:2020-12-20 13:01:49 所属栏目:Python 来源:网络整理
导读:我目前在使用 django模板时遇到问题.我基本上有3个模板文件: 基地 story_list story_detail Story_list和_detail扩展Base,完美无缺.但是,列表和详细信息共享一些扩展我的侧边栏基本模板的代码.我基本上在两个模板中重复了一大堆代码,而我的程序员说这是错的
我目前在使用 django模板时遇到问题.我基本上有3个模板文件:

>基地
> story_list
> story_detail

Story_list和_detail扩展Base,完美无缺.但是,列表和详细信息共享一些扩展我的侧边栏基本模板的代码.我基本上在两个模板中重复了一大堆代码,而我的程序员说这是错的.必须有一个更好的方法,我很确定.我试过包含,但是我在包含的文件中:

{% block item %}
    content stuff
{% endblock %}

大约3个街区.问题是没有一个被拾取/渲染.如果我将文件包含在扩展base的块部分中,那么它会正确地转储所有内容,但是如果我不将它包含在块中,我什么也得不到. SSI是可行的吗?我玩弄了这个,但这似乎也没有正常工作.任何帮助表示赞赏.

解决方法

通常,使用包含不是Django模板的答案.让我在几个方面回答你的问题.

首先,让我解决侧栏问题.

>几乎所有常见页面都将使用该侧边栏吗?把它放在Base.不要覆盖那些侧边栏(即不要在Story_ *模板中写下它们).
>这个侧栏是否为Story_ *模板独有?制作另一个名为Story_base的模板,然后对其进行扩展.这类似于在Java中创建抽象超类. (答案在我的脑海中,但是jpwatts的措辞是无情的ripped off.)

接下来,让我解决模板继承问题.假设您有一个名为Story_list的模板,它扩展了Base.此时,在刚刚放置{%extends“Base”%}之后,Story_list就是Base.您放入Story_list中的任何其他内容都将被忽略,因为该模板已经完成.您现在唯一能做的就是覆盖已在Base中定义的块.

最后,让我解决一下.尽量避免使用它们.其他模板引擎,如PHP,似乎鼓励使用包含.但是,从长远来看,这可能会导致模板的可管理性降低.稍微查看包含的代码段并立即确定其在模板层次结构中的位置会稍微困难一些.它们也很难重构到模板层次结构中,特别是如果你将它们包含在几个层次上(一次在Base中,两次在Story_base中,一次在Story_ *中,等等).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读