Django 模板渲染

7 篇文章 0 订阅
订阅专栏

一、Django Template Language(DTL)
DTL 即 Django模板语言,Django 模板是一些文本字符串,作用是把文档的表现与数据区分开。模板定义一些占位符和基本的逻辑(模板标签),规定如何显示文档。通常,模板用于生成 HTML。
Django 1.8 还支持另一个流行的模板引擎,Jinja2。
在这里插入图片描述
(一)使用Django模板
方式一:

1.导入 Template 和 Context 类

在这里插入图片描述
在这里插入图片描述
提示:
这样使用了模板系统,但是这没有解决我们在本章开头指出的问题,即模板仍然嵌在 Python 代码中,没有分离数据和表现。为了解决这个问题,我们要把模板放在单独的文件中,然后让视图加载。
(二)将模板单独放置在文件中
在这里插入图片描述
在这里插入图片描述
1、模板加载机制
为了从文件系统中加载模板,首先要告诉框架模板的存储位置。这个位置在设置文件中配置,打开 settings.py 文件,找到 TEMPLATES 设置。它的值是一个列表,分别针对各个模板引擎:
在这里插入图片描述
BACKEND 的值是指向实现 Django 模板引擎类。内置的后端有 django.template.backends.django.DjangoTemplates和
django.template.backends.jinja2.Jinja2。
因为多数引擎从文件中加载模板,所以各个引擎的顶层配置包含三个通用的设置:
• DIRS 定义一个目录列表,模板引擎按顺序在里面查找模板源文件。
• APP_DIRS 设定是否在安装的应用中查找模板。按约定,APPS_DIRS
设为 True 时,DjangoTemplates 会在INSTALLED_APPS 中的各个应用里查找名为“templates”的子目录。这样,即使 DIRS 为空,模板引擎还能查找应用模板。
• OPTIONS 是一些针对后端的设置。
注意:
TEMPLATE_DIRS:
在这里插入图片描述
自1.8版本起,不赞成使用,在一个DjangoTemplates引擎中设置’DIRS’选项来代替
在这里插入图片描述
二、模板变量
在Django的模板系统中变量使用的语法:{{ 变量名 }}。
当模版引擎遇到变量,就会用值替换掉变量。
变量的命名可以是字母数字以及下划线 ("")的组合。
变量名称中不能有空格或标点符号。
在这里插入图片描述
(一)变量中点“.”的特殊含义
点(.)在模板语言中有特殊的含义。当模版系统遇到点("."),它将以以下顺序查询:
字典查询 :如果向页面传递的是一个字典类型变量,变量名.key 获取值
属性或方法查询:如果传递一个对象,变量名.变量名
(此变量名有可能是属性,有可能是无参数方法名称)。
数字索引查询:如果传递一个列表,变量名.索引。
注意事项:
如果使用的变量不存在, 它被默认设置为(空字符串) 。
三、注释
与 HTML 和 Python 一样,Django 模板语言支持注释。
单行注释使用 {# #} 标明:
{# This is a comment #}
渲染模板时,不输出注释。使用这种句法编写的注释不能分成多行。这一限制有助于提升模板解析性能。
多行注释:使用 {% comment %} 模板标签,
如下所示:
{% comment %}
This is a
multi-line comment.
{% endcomment %}
注释标签不能嵌套。
三、Filters(过滤器)
在Django的模板语言中,通过使用 过滤器 来改变变量的显示。(注:过滤器是函数)
过滤器的语法: {{ 变量名|过滤器名称:参数 }}
使用管道符"|"来应用过滤器。
例如:{{ name|lower }}会将name变量应用lower过滤器之后再显示它的值。lower在这里的作用是将文本全都变成小写。
过滤器可以串接,即把一个过滤器的输出传给下一个过滤器。
例如:{{ msg|lower|upper }}
将msg变量内容先转换成小写然后再转换成大写。
(一)default
如果一个变量是false或者为空,使用给定的默认值。 否则,使用变量的值。
{{ value|default:“nothing”}}
如果value没有传值或者值为空的话就显示nothing
(二)length
返回值的长度,作用于字符串和列表。
{{ value|length }}
返回value的长度,如 value=[‘a’, ‘b’, ‘c’, ‘d’]的话,就显示4.
(三)slice
切片
格式:{{value|slice:“2:-1”}}
(四)date
日期格式化过滤器
格式:{{ value|date:“Y-m-d H:i:s”}}
(五)safe
Django的模板中会对HTML标签和JS等语法标签进行自动转义,原因显而易见,这样是为了安全。但是有的时候我们可能不希望这些HTML元素被转义,比如我们做一个内容管理系统,后台添加的文章中是经过修饰的,这些修饰可能是通过一个类似于FCKeditor编辑加注了HTML修饰符的文本,如果自动转义的话显示的就是保护HTML标签的源文件。为了在Django中关闭HTML的自动转义有两种方式,如果是一个单独的变量我们可以通过过滤器“|safe”的方式告诉Django这段代码是安全的不必转义。
比如:value = “ 点我”
格式:{{ value|safe}}
(六)cut
移除value中所有的与给出的变量相同的字符串
格式:{{ value|cut:’ ’ }},如果value为’i love you’,那么将输出’iloveyou’.
(七)join
使用拼接符连接列表,例如Python的str.join(list)
格式: {{value|join:”
”}}
注意事项:
1.’:'左右没有空格
2.django的模板语言中提供了大约六十个内置过滤器。
四、tags 标签
使用Django中的标签可以在模板中做一些简单的逻辑判断。
标签和{%%}配合使用。
(一)for标签
格式:{%for 临时变量 in 序列 %} … {%endfor%}
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(二)for…empty标签

如果变量名不存在或者内容为空的时候显示{%empty%}中的内容,否则不执行。
格式:
{% for game in games %}

{% empty %}

{% endfor %}
在这里插入图片描述
(三)if 标签
格式:
{% if 判断条件 %}

{% endif %}
注: if 语句支持 and、or、==、<、>、!=、<=,>=,in、not in、is、is not判断。
(四)if … else 标签
格式:
{% if name_length|length > 6 %}

{% else %}

{% endif %}
(五)if…elif…else 标签
格式:
{% if name_length|length > 6 %}

{% elif age == 20 %}

{% else %}

{% endif %}

(六)load 和 static 标签
当我们想在页面上使用一些静态资源例如图片、js、css 。这时候我们就要使用到static标签了。

例如在页面中显示一张本地图片。
操作步骤:
a.新建一个文件夹来盛放静态资源,例如 static,为了和后面的static标签区分,这里使用 statics名称
在这里插入图片描述
b.将statics文件夹加载到python搜索路径中。
在这里插入图片描述
c.在页面上最开始位置使用 {%load static %} load 标签 来加载 static 标签。
在这里插入图片描述
d.在要展示图片的地方 使用 {% static ‘图片路径’}
{% static ‘图片路径’} 表示 使用
在这里插入图片描述
注:如果不想在每一个页面中都使用 {%load static %} ,可在settings.py中进行如下配置
在这里插入图片描述
在这里插入图片描述
五、模板继承
当我们浏览一个网站的时候发现里面的网页大部分都是相同的,这样我们就可以使用模板继承来除去重复的代码,提高开发效率。
1.定义母板
在这里插入图片描述
在这里插入图片描述
2.继承母板
语法:{% extends ‘base.html’ %}
在这里插入图片描述
在这里插入图片描述

django static和media文件在setting中的配置
sinat_14977477的博客
08-02 421
templates文件的配置 TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [ 'templates', ], 'APP_DIRS': True, 'OPT...
Django笔记总结(三) -- 模板渲染、form表单验证
weixin_30448685的博客
03-27 604
一、模板验证   1、模板语言   当我们在写网站应用的时候,需要向前端页面传递数据,这些数据是如何在前端页面上显示的呢?这就需要我们使用模板,我们把模板文件和我们的数据进行渲染后生成一个新的html文件,把这个文件的内容返回给前端,就可以展示数据了,我们首先来访问一个前端的页面。   首先,我们先创建一个模板文件template.html,所有的模板文件都应该保存在工程的temp...
(十一)Django学习——结合前面所学实现一个博客小案例(附有源码
m0_60388292的博客
04-06 547
🍅 硬核资料:关注即可领取PPT模板、简历模板、行业经典书籍PDF。🍅 技术互助:技术群大佬指点迷津,你的问题可能不是问题,求资源在群里喊一声。🍅 面试题库:由技术群里的小伙伴们共同投稿,热乎的大厂面试真题,持续更新中。🍅 知识体系:含编程语言、算法、大数据生态圈组件(Mysql、Hive、Spark、Flink)、数据仓库、Python、前端等等。一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!
Python之 Django 模板渲染Template
wguo-up-site
12-06 2381
1. Django自带模板 1.1 配置 在工程中创建模板目录templates。 在项目settings.py配置文件中修改TEMPLATES配置项的DIRS值: # 基本配置 TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [os.path.join(BASE_DIR, 'templates')], 'APP_DIRS':
模板渲染
gklcsdn的博客
01-25 594
文章目录1. 在项目根目录下新建`templates` 文件夹,用来存放模板文件2. 配置settings文件3. 写一个简单的HTML页面4. teacher APP下视图文件5. teacher APP 下路由6. 访问页面 1. 在项目根目录下新建templates 文件夹,用来存放模板文件 templates里再新建一个teacher文件夹,用来存放teacher APP下的HTML文件 ...
VUE模板渲染
leva的博客
02-08 958
当我们获取后台数据之后,会按照一定的规则加载到前端写好的模板中,并显示在浏览器中,这个过程称为渲染
Python Django框架模板渲染功能示例
09-18
主要介绍了Python Django框架模板渲染功能,结合实例形式分析了Django框架模板渲染相关的配置、视图调用、变量赋值等相关操作技巧,需要的朋友可以参考下
django-render:Django 模板渲染糖。 支持基于功能和类的视图。 (未维护,使用 https
06-11
该包为模板渲染和请求上下文中的 CBV 混合提供装饰器,代码使用简单。 重要提示:所有模板渲染都在请求上下文中进行。 会话、cookies、meta 等可从模板中获得。 安装 您可以通过 pip 安装库。 pip install django...
Django框架模板介绍
12-25
定义:在Django框架中,模板是可以帮助开发者快速生成呈现给用户页面的工具 模板的设计方式实现了我们MVT中VT的解耦,VT有着N:M的关系,一个V可以调用任意T,一个T可以供任意V使用 模板处理分为两个过程 ① 加载 ...
初识django模板和静态文件
03-14
通过此实例可以学习到: 1. 视图函数渲染模板 2. 默认模板文件查找顺序及自定义模板查找顺序 3. 如何引用静态文件
Django Template 渲染机制详解
艾希射日
09-16 6169
通过源码分析 Django模板渲染机制
一套精美的博客模板
08-04
一套精美的博客模板 ,适用于各种后台,如果要是用django开发,可以参考追梦任务的博客:https://www.zmrenwu.com/post/2/
django for 前端_使用django进行前端模板渲染
weixin_36058835的博客
02-23 769
再对前端模板渲染之前,我们要先掌握以下知识一、1、在django模板系统中,变量要和html尽量分开,HTML和Python是分开的。2、确定表达的形式:记住加载模板的方法 from django.template import Templatetem=Template(string)#字符串形式3、确定表达的内容:(1)使用django响应http方法from django.http impor...
django模板网页渲染(无超连接)
百雨的博客
03-28 1100
目录 (一)为模板templates铺路 (二) 配置模板路径 (三)给html进行渲染 (四)将views里面的index配置到urls里面 (五)启动项目,网址访问。完成! (六)拓展 (七)对第六步还可以再完善(美滋滋) (一)为模板templates铺路 (二) 配置模板路径 配置好路径之后才会有如下效果: (三)给html进行渲染 (1)...
Django所有模板中使用session中的数据
喵咪先生
07-04 1280
django模板中使用使用公共变量或session数据,需要用到Django 的上下问渲染器。 首先在setting.py中的TEMPLATE_CONTEXT_PROCESSORS中添加一句: TEMPLATE_CONTEXT_PROCESSORS = (     ...     "django.core.context_processors.request",  
Django模板系统详解(四)
韦宇的博客
07-05 5258
你可能已经注意到我们在例子视图中返回文本的方式有点特别。也就是说,HTML被硬性地直接写入 Python 代码之中。 这种处理会导致一些问题: § 对页面设计的进行任何改变都必须对 Python 代码进行相应的修改。站点设计的修改往往比底层 Python 代码的修改要频繁得多,因此如果可以在不进行 Python 代码修改的情况下变更设计,那将会方便得多。 § Python 代码编写
Python3后端--28--Django项目的数据渲染与展示
武天旭的博客
12-30 1040
如果直接阅读本文,您可能有些不知所云,这是因为我用很多篇幅讲了一个事情,如果想知道上下文,那么建议您从本专栏第22章看起:Python3开发–22–了解Django框架 一、模版介绍
Gin模板渲染
go|Python的个人博客
08-16 1079
有两种选择,一种是只有一个返回值,还有一种是有两个返回值,但是第二个返回值必须是error类型的。这两种函数的区别是第二个函数在模板中被调用的时候,假设模板函数的第二个参数的返回不为空,则该渲染步骤将会被打断并报错。如果赋值给两个变量,则第一个变量是索引值(array/slice是数值,map是key),第二个变量是当前正在遍历元素的值。首先,template包创建新的模板的时候,支持.Funcs方法来将自定义的函数集合导入到该模板中,后续通过该模板渲染的文件均支持直接调用这些函数。...
【Gin】Gin模板渲染
大河之犬的博客
05-23 1027
定义一个不转义相应内容的safe// gin框架给模板添加自定义函数 r . SetFuncMap(template . FuncMap {return template . HTML(str) } , }) // 模板解析,解析templates目录下的所有模板文件
django 运费模板
最新发布
04-11
要使用Django模板,您需要在视图函数中加载模板,并将数据传递给模板进行渲染。然后,您可以将渲染后的模板发送给客户端以显示在浏览器中。 以下是一个简单的示例,演示如何在Django中使用模板: 1. 创建一个模板...

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
34
原创
3
点赞
19
收藏
1
粉丝
关注
私信
写文章

热门文章

  • Django 模板渲染 1214
  • Django 超级用Admin的创建与使用 1140
  • Django ORM使用及CRUD操作 1132
  • HTML5+CSS 字体修饰与选择器优先级 804
  • Python 集合 585

分类专栏

  • 爬虫 1篇
  • python 18篇
  • HTML 7篇
  • css 6篇
  • Js 3篇
  • Django 7篇

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交

最新文章

  • python爬虫 网络请求与request库的使用
  • Django ORM关系字段的CRUD
  • Django 超级用Admin的创建与使用
2019年35篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

深圳SEO优化公司白城优化价格邯郸关键词排名哪家好陇南网站seo优化哪家好成都seo网站推广延边网站优化排名价格淮安百姓网标王多少钱宿迁网站制作价格大同高端网站设计多少钱昌吉SEO按天计费哪家好临猗营销网站推荐南山品牌网站设计价格恩施建设网站推荐山南建站哪家好乌海网络营销报价爱联百姓网标王盘锦建网站价格张家界网站优化软件多少钱丽江网页设计拉萨网站关键词优化报价大运网站建设报价常德网站优化排名公司十堰网站改版推荐哈密营销型网站建设公司铜仁SEO按天计费大同网站改版哪家好舟山高端网站设计哪家好太原seo排名报价通化百度爱采购推荐福永模板网站建设哪家好黄冈外贸网站建设价格歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化