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中装饰器的使用
Jul 12 Python
Python模拟登录验证码(代码简单)
Feb 06 Python
Python 自动刷博客浏览量实例代码
Jun 14 Python
python使用SMTP发送qq或sina邮件
Oct 21 Python
python通过百度地图API获取某地址的经纬度详解
Jan 28 Python
python opencv之分水岭算法示例
Feb 24 Python
django自带的server 让外网主机访问方法
May 14 Python
python 判断矩阵中每行非零个数的方法
Jan 26 Python
Python根据成绩分析系统浅析
Feb 11 Python
教你如何用python操作摄像头以及对视频流的处理
Oct 12 Python
python爬虫中采集中遇到的问题整理
Nov 27 Python
使用python如何删除同一文件夹下相似的图片
May 07 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
20个PHP常用类库小结
2011/09/11 PHP
PHP中的类型提示(type hinting)功能介绍
2015/07/01 PHP
PHP下使用mysqli的函数连接mysql出现warning: mysqli::real_connect(): (hy000/1040): ...
2016/02/14 PHP
php表单处理操作
2017/11/16 PHP
php和asp语法上的区别总结
2019/05/12 PHP
利用JS判断用户是否上网(连接网络)
2013/12/23 Javascript
基于jquery实现表格无刷新分页
2016/01/07 Javascript
javascript检测移动设备横竖屏
2016/05/21 Javascript
浅谈javascript:两种注释,声明变量,定义函数
2016/10/05 Javascript
AngularJS入门教程之多视图切换用法示例
2016/11/02 Javascript
JS给按钮添加跳转功能类似a标签
2017/05/30 Javascript
js数组方法reduce经典用法代码分享
2018/01/07 Javascript
node中的密码安全(加密)
2018/09/17 Javascript
如何优雅地在vue中添加权限控制示例详解
2019/03/07 Javascript
vue3.0自定义指令(drectives)知识点总结
2020/12/27 Vue.js
[01:24:51]2014 DOTA2华西杯精英邀请赛 5 25 LGD VS NewBee第二场
2014/05/26 DOTA
[40:48]DOTA2上海特级锦标赛D组败者赛 Liquid VS COL第二局
2016/02/28 DOTA
Python3中的2to3转换工具使用示例
2015/06/12 Python
Python实现PS滤镜Fish lens图像扭曲效果示例
2018/01/29 Python
Python实现对特定列表进行从小到大排序操作示例
2019/02/11 Python
python pycharm最新版本激活码(永久有效)附python安装教程
2020/09/18 Python
彻底搞懂 python 中文乱码问题(深入分析)
2020/02/28 Python
Python3.8安装Pygame教程步骤详解
2020/08/14 Python
解决pytorch 数据类型报错的问题
2021/03/03 Python
PUMA官方商城:世界领先的运动品牌之一
2016/11/16 全球购物
蒂芙尼澳大利亚官方网站:Tiffany&Co. Australia
2017/08/27 全球购物
匡威西班牙官网:Converse西班牙
2019/10/01 全球购物
小米乌克兰网上商店:Xiaomi.UA
2019/10/29 全球购物
西班牙用户之间买卖视频游戏的平台:Wakkap
2020/03/21 全球购物
外企求职信范文分享
2013/12/31 职场文书
暑假家长评语大全
2014/04/17 职场文书
《爱的教育》读书心得
2014/11/08 职场文书
大学生创业,为什么都会选择快餐饮?
2019/08/08 职场文书
PyCharm配置KBEngine快速处理代码提示冲突、配置命令问题
2021/04/03 Python
vue实现锚点定位功能
2021/06/29 Vue.js
Win11如何修改dns?Win11修改dns图文教程
2022/01/18 数码科技