gpt4 book ai didi

Django中模板的子目录与include标签的使用方法

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 27 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章Django中模板的子目录与include标签的使用方法由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

get_template()中使用子目录 。

把所有的模板都存放在一个目录下可能会让事情变得难以掌控。 你可能会考虑把模板存放在你模板目录的子目录中,这非常好。 事实上,我们推荐这样做;一些Django的高级特性(例如将在第十一章讲到的通用视图系统)的缺省约定就是期望使用这种模板布局.

把模板存放于模板目录的子目录中是件很轻松的事情。 只需在调用 get_template() 时,把子目录名和一条斜杠添加到模板名称之前,如:

?
1
t = get_template( 'dateapp/current_datetime.html' )

由于 render_to_response() 只是对 get_template() 的简单封装, 你可以对 render_to_response() 的第一个参数做相同处理.

return render_to_response('dateapp/current_datetime.html', {'current_date': now}) 。

对子目录树的深度没有限制,你想要多少层都可以。 只要你喜欢,用多少层的子目录都无所谓.

注意 。

Windows用户必须使用斜杠而不是反斜杠。 get_template() 假定的是 Unix 风格的文件名符号约定.

include 模板标签 。

在讲解了模板加载机制之后,我们再介绍一个利用该机制的内建模板标签: {% include %} 。该标签允许在(模板中)包含其它的模板的内容。 标签的参数是所要包含的模板名称,可以是一个变量,也可以是用单/双引号硬编码的字符串。 每当在多个模板中出现相同的代码时,就应该考虑是否要使用 {% include %} 来减少重复.

下面这两个例子都包含了 nav.html 模板。这两个例子是等价的,它们证明单/双引号都是允许的.

?
1
2
{ % include 'nav.html' % }
{ % include "nav.html" % }

下面的例子包含了 includes/nav.html 模板的内容

?
1
{ % include 'includes/nav.html' % }

下面的例子包含了以变量 template_name 的值为名称的模板内容:

?
1
{ % include template_name % }

和在 get_template() 中一样, 对模板的文件名进行判断时会在所调取的模板名称之前加上来自 TEMPLATE_DIRS 的模板目录.

所包含的模板执行时的 context 和包含它们的模板是一样的。 举例说,考虑下面两个模板文件:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# mypage.html
 
<html>
<body>
{ % include "includes/nav.html" % }
<h1>{{ title }}< / h1>
< / body>
< / html>
 
# includes/nav.html
 
<div id = "nav" >
   You are in : {{ current_section }}
< / div>

如果你用一个包含 current_section的上下文去渲染 mypage.html这个模板文件,这个变量将存在于它所包含(include)的模板里,就像你想象的那样.

如果{% include %}标签指定的模板没找到,Django将会在下面两个处理方法中选择一个:

  1.     如果 DEBUG 设置为 True ,你将会在 Django 错误信息页面看到 TemplateDoesNotExist 异常。
  2.     如果 DEBUG 设置为 False ,该标签不会引发错误信息,在标签位置不显示任何东西。

最后此篇关于Django中模板的子目录与include标签的使用方法的文章就讲到这里了,如果你想了解更多关于Django中模板的子目录与include标签的使用方法的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

27 4 0