我是一个django新手,在创建我的第一个项目时,我已经意识到我的很多样板代码(我页面上的列表)。我必须在每个视图中重新创建它们,我试图坚持使用DRY,但我发现自己每次都会重写代码。有没有办法从我的基本视图继承并只修改一些对象?
谢谢, 詹姆斯
答案 0 :(得分:3)
是的,您需要查看template inheritance,它允许您在模板之间共享公共元素,以及{% include %}
模板标记,它可以让您创建可包含的可重复使用的模板“代码段”在其他模板中。
编辑:重新阅读问题,听起来您正在谈论您在视图函数/方法中使用的样板代码,您正在使用它来生成由多个模板共享的上下文。在这种情况下,mipadi的答案是正确的:查看上下文处理器。
答案 1 :(得分:3)
您可能希望使用context processor进行此项工作。
答案 2 :(得分:3)
对于最近的文章列表等,custom template tags是您需要的。虽然上下文处理器会自动使用列表填充您的上下文,但模板标记实际上可以执行此操作,并为列本身创建整个HTML标记。
答案 3 :(得分:1)
对于重复出现的大块静态html,您可以使用include模板标记:
{% include 'static/some_file.html' %}
包含存储在模板文件系统中,就像模板一样。
答案 4 :(得分:0)
如果您由于某些原因决定使用上下文处理器(此解决方案在此处看起来很合理),您可以始终将一些常用逻辑封装到util函数中并在视图中使用它们。
您还可以查看Generic views - 这是使用您的代码“保持干净”的好方法