我已经进入Django 2小时了,我想知道是否有一种方法可以为所有模板自动加载一个默认的基本模板,这样您就不必在每个页面模板的顶部重复和指定{% extends "foo.html" %}。
例如,在项目或应用程序级别,一些元数据(设置)可以指定使用的默认模板,除非要呈现的调用或模板本身指定不应该包含模板。即render(... other args..., layout=null)或{% noextends "foo.html" %}
这实际上把被占的风格变成了选择退出,这在我的经验中是优先考虑的。考虑到它是在一些类似设置中指定的,它不是“魔力”,而是与Django的精神决裂。
我查看了文档,这在默认情况下似乎是不可用的。我想我可以做一些事情,比如覆盖内置的呈现例程,尝试将{% extends "foo.html" %}调用连接到每个模板上,但我希望互联网能够告诉我已经有了一个我缺少的解决方案。
发布于 2014-07-12 07:37:04
除非您想要编写您自己的模板加载程序函数,该函数会查看默认设置并将其安装到猴子补丁程序中,否则“不,没有办法做到这一点”是准确的。
至少每个文件只有一行。
另外,作为一个长期存在的Django约定,其他开发人员将立即能够看到所使用的基本模板(在更复杂的项目中,您可能会发现您根据用户的类型使用不同的基本模板)。
最后,正如Python的禅宗所说,显式比隐式更好。:-)
发布于 2014-07-12 08:50:18
不要忘记,这是Python中的一个指导原则,因此在Django中也是如此--显式比隐式更好。例如,Rails强调的是约定而不是配置,而各种事情都是自动发生的,这与Python的做事方式非常不同。
因此,没有办法让Django使模板自动从基继承。虽然您可能可以通过创建自定义模板加载器来实现这个功能,但这并不是一个很好的主意,因为它会让其他查看您项目的人感到困惑。
发布于 2014-07-12 04:24:03
你试过了吗
{% include "foo.html" %}https://stackoverflow.com/questions/24709551
复制相似问题