django 中的模块化模板

Posted

技术标签:

【中文标题】django 中的模块化模板【英文标题】:Modular templates in django 【发布时间】:2013-08-16 07:40:26 【问题描述】:

我开始使用 Django,我正在尝试制作一个模块化模板,但我不知道如何。现在,我有以下文件:

1- base.html(提供所有网站的基本布局):

% load staticfiles %
<!DOCTYPE html>
<html>
<head>
<title>My site</title>
<link rel="stylesheet" type="text/css" href="% static 'css/style.css' %" />
<link rel="stylesheet" type="text/css" href="% static 'css/bootsrap.min.css' %" />
</head>

<body>
<h1>Test title</h1>
% block content %
% endblock %
</body>
</html>

2- index.html(主数据库读取)

% extends 'base.html' %
% block content %
% if latest_smartphones_list %
<ul>
% for s in latest_smartphones_list %
    <li><a href="#"> s.brand   s.name </a></li>
% endfor %
</ul>
% else %
<p>No smarphones available.</p>
% endif %
% endblock %

最后,我想添加第三个文件,名为 menu.html,其中包含站点菜单。我想将它添加到 base.html 文件中。我一直在考虑通过以下方式来做,但我不工作:

% load 'menu.html' %

非常感谢您的帮助!

【问题讨论】:

三级模板是template inheritance reference documentation中的一个例子 【参考方案1】:

您必须使用% include 'menu.html' %,而不是使用% load 'menu.html' %

文档:

include load

【讨论】:

【参考方案2】:

正确的方法是使用include templatetag

% include 'menu.html' %

其中包含一个模板并使用当前上下文呈现它。

NB:当你遇到麻烦时,django docs 是最好的去处!永远记住这一点

【讨论】:

以上是关于django 中的模块化模板的主要内容,如果未能解决你的问题,请参考以下文章

Django logging日志模块详解(日志记录模板配置)

Django 如何使用带有静态/模板的 npm 模块

Django模块

Django之模板层-自定义过滤器以及标签

Django模板之自定义过滤器/标签/组件

在代码中使用 django 内置过滤器(在模板之外)