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使用wmi模块获取windows下硬盘信息的方法
May 15 Python
python进行TCP端口扫描的实现
Dec 21 Python
Python 调用PIL库失败的解决方法
Jan 08 Python
python列表使用实现名字管理系统
Jan 30 Python
python实现转圈打印矩阵
Mar 02 Python
python读写csv文件的方法
Aug 13 Python
Python FtpLib模块应用操作详解
Dec 12 Python
Flask框架搭建虚拟环境的步骤分析
Dec 21 Python
Python基础类继承重写实现原理解析
Apr 03 Python
python nohup 实现远程运行不宕机操作
Apr 16 Python
Python Dataframe常见索引方式详解
May 27 Python
Python入门之使用pandas分析excel数据
May 12 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下封装较好的数字分页方法
2010/11/23 PHP
PHP命名空间namespace及use的简单用法分析
2018/08/03 PHP
PhpSpreadsheet设置单元格常用操作汇总
2020/11/13 PHP
JS中动态添加事件(绑定事件)的代码
2011/01/09 Javascript
JavaScript入门之对象与JSON详解
2011/10/21 Javascript
js动画(animate)简单引擎代码示例
2012/12/04 Javascript
js给页面加style无效果的解决方法
2014/01/20 Javascript
JQUERY简单按钮轮换选中效果实现方法
2015/05/07 Javascript
JS调用某段SQL语句的方法
2016/10/20 Javascript
js实现可输入可选择的select下拉框
2016/12/21 Javascript
JS作用域深度解析
2016/12/29 Javascript
js实现tab切换效果
2017/02/16 Javascript
vue watch关于对象内的属性监听
2019/04/22 Javascript
layui自定义ajax左侧三级菜单
2019/07/26 Javascript
微信小程序模板消息限制实现无限制主动推送的示例代码
2019/08/27 Javascript
jquery 键盘事件 keypress() keydown() keyup()用法总结
2019/10/23 jQuery
详解Vue 项目中的几个实用组件(ts)
2019/10/29 Javascript
python实现猜数字游戏(无重复数字)示例分享
2014/03/29 Python
Python中实现结构相似的函数调用方法
2015/03/10 Python
python中文乱码不着急,先看懂字节和字符
2017/12/20 Python
python基于物品协同过滤算法实现代码
2018/05/31 Python
python字符串常用方法
2018/06/14 Python
python opencv实现旋转矩形框裁减功能
2018/07/25 Python
Python线程同步的实现代码
2018/10/03 Python
Pandas统计重复的列里面的值方法
2019/01/30 Python
利用Python进行图像的加法,图像混合(附代码)
2019/07/14 Python
python 动态绘制爱心的示例
2020/09/27 Python
如何利用Python matplotlib绘制雷达图
2020/12/21 Python
详解CSS3中@media的实际使用
2015/08/04 HTML / CSS
软件测试面试题
2014/01/05 面试题
2014两会学习心得:时代的发展
2014/03/17 职场文书
餐饮商业计划书范文
2014/04/29 职场文书
电钳工人个人求职信
2014/05/10 职场文书
食品流通安全承诺书
2014/05/22 职场文书
2015年艾滋病防治工作总结
2015/05/22 职场文书
Innodb存储引擎中的后台线程详解
2022/04/03 MySQL