f4n*_*4nt 3 python django django-templates
我目前在使用django模板时遇到问题.我基本上有3个模板文件:
Story_list和_detail扩展Base,完美无缺.但是,列表和详细信息共享一些扩展我的侧边栏基本模板的代码.我基本上在两个模板中重复了一大堆代码,而我的程序员说这是错的.必须有一个更好的方法,我很确定.我试过包含,但是我在包含的文件中:
{% block item %}
content stuff
{% endblock %}
Run Code Online (Sandbox Code Playgroud)
大约3个街区.问题是没有一个被拾取/渲染.如果我将文件包含在扩展base的块部分中,那么它会正确地转储所有内容,但是如果我不将它包含在块中,我什么也得不到.SSI是可行的吗?我玩弄了这个,但这似乎也没有正常工作.任何帮助表示赞赏.
Wes*_*ley 16
通常,使用includes不是Django模板的答案.让我在几个方面回答你的问题.
首先,让我解决侧栏问题.
几乎所有常见页面都会使用该侧边栏吗?把它放进去Base.不要覆盖那些侧边栏(即不要在Story_*模板中写下它们).
这个侧边栏是Story_*模板独有的吗?制作另一个模板,比如说,Story_base并扩展它.这类似于在Java中创建抽象超类.(答案在我脑海中,但措辞被jpwatts 无情地扯掉了.)
接下来,让我解决模板继承问题.假设您有一个名为Story_listextends 的模板Base.在这一点上,刚刚推出{% extends "Base" %},Story_list 确切地说 Base.您放入的任何其他内容都会Story_list被忽略,因为模板已经完成.您现在唯一能做的就是覆盖已定义的块Base.
最后,让我谈谈include.尽量避免使用它们.其他模板引擎,如PHP,似乎鼓励使用includes.但是,从长远来看,这可能会导致模板的可管理性降低.稍微查看包含的代码段并立即确定其在模板层次结构中的位置会稍微困难一些.它们也很难重构到模板层次结构中,特别是如果你将它们包含在几个级别(一次进入Base,两次进入Story_base,一些进入Story_*,等等).
| 归档时间: |
|
| 查看次数: |
8347 次 |
| 最近记录: |