前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >django模板语法之include

django模板语法之include

作者头像
用户1214487
发布2018-01-24 11:42:38
1.3K0
发布2018-01-24 11:42:38
举报
文章被收录于专栏:PythonPython

假如我们有以下模板index.html,代码为:

代码语言:javascript
复制
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<div>网页公共头部部分</div>

<h2> 网页body部分 </h2>

<div>网页公共底部部分</div>

</body>
</html>

做过web开发的童鞋知道大部分网页的公共头部,公共底部部分代码每个页面都一样,那么就应该将其单独拿出做为一个html, 这样修改这部分代码时候,不需要每个页面都修改, 所以在django中我们可以这么做:

top.html

代码语言:javascript
复制
<div>网页公共头部部分</div>  

bottom.html

代码语言:javascript
复制
<div>网页公共底部部分</div>  

index.html

代码语言:javascript
复制
<!DOCTYPE html>  
<html lang="en">  
<head>  
    <meta charset="UTF-8">  
    <title>Title</title>  
</head>  
<body>  
  
{% include 'top.html' %}  
  
<h2> 网页body部分 </h2>  
  
{% include 'bottom.html' %}  
  
</body>  
</html>  

我们可以使用django模板引擎的Include语法,来将单独的页面包含到当前模板页面中。有同学有疑问,那我们通过视图传递给模板的上下文,在被包含的模板中可以使用吗?可以直接使用。

假如我们有如下视图:

代码语言:javascript
复制
def index(request):  
    return render(request, 'index.html', {'a': 100, 'b': 200})  

该django的视图函数,传递给模板并渲染模板。

top.html修改如下:

代码语言:javascript
复制
<div>网页公共头部部分:{{ a }}</div>  

这么使用是没有问题的。

我这里有这样的一个问题,假如所有的页面都使用共同的头部top.html, 可能针对1.html 2.html 3.html所使用的头部有些样式不一样,所需top.html:

代码语言:javascript
复制
<div classs='acss'>网页公共头部部分</div>  

但是对于5.html, 6.html使用的头部样式为:

代码语言:javascript
复制
<div class='bcss'>网页公共头部部分</div>  

很显然,如果直接通过include方式包含公共头部,会导致一些页面显示问题。既然部分参数不一样,include允许我们传递参数给被include的模板,我们可以使用with语法,那么问题解决如下:

代码语言:javascript
复制
{{ % include 'top.html' with mycss='acss' % }}  

top.html可修改如下:

代码语言:javascript
复制
<div class='{{mycss}}'>网页公共头部部分</div>  

被包含模板中部分参数,由我们include的时候动态指定,那么top.html就不会因为细微差别而编写多份代码了。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-12-16 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档