Django框架模板语言实例小结【变量,标签,过滤器,继承,html转义】


Posted in Python onMay 23, 2019

本文实例讲述了Django框架模板语言。分享给大家供大家参考,具体如下:

模板语言

模板语言简称为DTL(Django Template Language)

模板变量

模板变量名由数字,字母,下划线和点组成,不能以下划线开头。
使用:{{模板变量名}}

def index2(request):
  '''模板加载顺序'''
  return render(request, 'booktest/index2.html')
# /temp_var
def temp_var(request):
  '''模板变量'''
  my_dict = {'title': '字典键值'}
  my_list = [1, 2, 3]
  book = BookInfo.objects.get(id=1)
  #定义模板上下文
  context={'my_dict':my_dict,'my_list':my_list,'book':book}
  return render(request,'booktest/temp_var.html',context)

模板变量可以是字典,列表或者对象。定义好模板上下文之后,用render()函数传递给html

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>模板变量</title>
</head>
<body>
使用字典属性:{{ my_dict.title }}
使用列表元素:{{ my_list.1 }}
使用对象属性:{{ book.btitle }}
</body>
</html>

可以看到模板变量都是通过 . 调用的。

模板标签

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>模板标签</title>
  <style>
    .red{
      background-color: red;
    }
    .yellow{
      background-color: yellow;
    }
    .green{
      background-color: green;
    }
  </style>
</head>
<body>
<ul>
  {% for book in books %}
    {% if book.id <= 2 %}
    <li class="red">{{ forloop.counter }}--{{ book.btitle }}</li>
    {% elif book.id >= 5 %}
      <li class="yellow">{{ forloop.counter }}--{{ book.btitle }}</li>
    {% else %}
      <li class="green">{{ forloop.counter }}--{{ book.btitle }}</li>
    {% endif %}
  {% endfor %}
</ul>
</body>
</html>

具体的其他的模板标签可以参考Django官方文档。

过滤器

过滤器用于对模板变量进行操作

date:改变日期的显示格式
length:求长度,字符串,列表,元祖,字典
default:设置模板变量的默认值

格式:模板变量 | 过滤器:参数

date过滤器

<li class="red">{{ book.btitle }}--{book.bpub_date | date:'Y年-m月-d日'}</li>

default过滤器 {{dd | default:'无'}}

模板注释

单行注释:{# 注释 #}

多行注释:{% comment %}

模板继承

不同页面可能有相同的模块,这时候可以使用模板继承减少代码量

base.html内容

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>父模板</title>
</head>
<body>
<h1>导航条</h1>
{% block b1 %}
  <h1>这是父模板b1块中的内容</h1>
{% endblock b1 %}
<h1>版权信息</h1>
</body>
</html>

child.html内容

{% extends 'booktest/base.html' %}
{% block b1 %}
  {{ block.super }}
  <h1>这是子模板b1的内容</h1>
{% endblock b1 %}

在父模板中{% block b1 %} <h1>这是父模板b1块中的内容</h1> {% endblock b1 %}
定义一个预留快,预留块中可以有内容。子模板继承时,{% extends 'booktest/base.html' %}导入,{% block b1 %} {{ block.super }} <h1>这是子模板b1的内容</h1> {% endblock b1 %}写预留块,{{ block.super }}继承预留快的内容。

html转义

通过render()函数传递过来的模板上下文默认是转义的,也就是说我们想传递html语言的时候,实际上传递过来的是字符串,这个时候我们可以通过过滤器关闭转义

{{context | safe}}

希望本文所述对大家基于Django框架的Python程序设计有所帮助。

Python 相关文章推荐
在Python 3中实现类型检查器的简单方法
Jul 03 Python
Python实现自定义顺序、排列写入数据到Excel的方法
Apr 23 Python
python实现下载pop3邮件保存到本地
Jun 19 Python
Python实现获取汉字偏旁部首的方法示例【测试可用】
Dec 18 Python
pyqt5 实现工具栏文字图片同时显示
Jun 13 Python
Python pandas.DataFrame 找出有空值的行
Sep 09 Python
PIL包中Image模块的convert()函数的具体使用
Feb 26 Python
解决jupyter notebook打不开无反应 浏览器未启动的问题
Apr 10 Python
用 python 进行微信好友信息分析
Nov 28 Python
Python之Sklearn使用入门教程
Feb 19 Python
图文详解matlab原始处理图像几何变换
Jul 09 Python
python_tkinter弹出对话框创建
Mar 20 Python
Django框架模板文件使用及模板文件加载顺序分析
May 23 #Python
Django框架登录加上验证码校验实现验证功能示例
May 23 #Python
python图形工具turtle绘制国际象棋棋盘
May 23 #Python
python os模块简单应用示例
May 23 #Python
python使用turtle绘制国际象棋棋盘
May 23 #Python
Python实现的服务器示例小结【单进程、多进程、多线程、非阻塞式】
May 23 #Python
Python3.8中使用f-strings调试
May 22 #Python
You might like
关于php连接mssql:pdo odbc sql server
2011/07/20 PHP
php各种编码集详解和以及在什么情况下进行使用
2011/09/11 PHP
thinkPHP连接sqlite3数据库的实现方法(附Thinkphp代码生成器下载)
2016/05/27 PHP
PHP接收App端发送文件流的方法
2016/09/23 PHP
thinkPHP5.0框架引入Traits功能实例分析
2017/03/18 PHP
JavaScript创建一个欢迎cookie弹出窗实现代码
2013/03/15 Javascript
JS 实现Table相同行的单元格自动合并示例代码
2013/08/27 Javascript
Jquery如何实现点击时高亮显示代码
2014/01/22 Javascript
jQuery插件StickUp实现网页导航置顶
2015/04/12 Javascript
js实现随屏幕滚动的带缓冲效果的右下角广告代码
2015/09/04 Javascript
关于JSON.parse(),JSON.stringify(),jQuery.parseJSON()的用法
2016/06/30 Javascript
Javascript使用SWFUpload进行多文件上传
2016/11/16 Javascript
JS作用域深度解析
2016/12/29 Javascript
解决URL地址中的中文乱码问题的办法
2017/02/10 Javascript
详解利用 Express 托管静态文件的方法
2017/09/18 Javascript
解决vue动态下拉菜单 有数据未反应的问题
2020/08/06 Javascript
解决vue-loader加载不上的问题
2020/10/21 Javascript
[01:51]2014DOTA2国际邀请赛 这个赛场没有失败者VGTi5再见
2014/07/23 DOTA
windows系统中python使用rar命令压缩多个文件夹示例
2014/05/06 Python
Python的Django框架中消息通知的计数器实现教程
2016/06/13 Python
Python 机器学习库 NumPy入门教程
2018/04/19 Python
对pandas通过索引提取dataframe的行方法详解
2019/02/01 Python
简单了解django索引的相关知识
2019/07/17 Python
利用Python实现最小二乘法与梯度下降算法
2021/02/21 Python
HTML5实现移动端点击翻牌功能
2020/10/23 HTML / CSS
美国祛痘、抗衰老药妆品牌:Murad
2016/08/27 全球购物
介绍一下Ruby中的对象,属性和方法
2012/07/11 面试题
如何理解transaction事务的概念
2015/05/27 面试题
员工培训邀请函
2014/02/02 职场文书
公职人员索取回扣检举信
2014/04/04 职场文书
安全生产计划书
2014/05/04 职场文书
教师群众路线心得体会
2014/11/04 职场文书
2015年林业工作总结
2015/05/14 职场文书
郭明义观后感
2015/06/08 职场文书
基于CSS3画一个iPhone
2021/04/21 HTML / CSS
新手初学Java List 接口
2021/07/07 Java/Android