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 相关文章推荐
使用wxpython实现的一个简单图片浏览器实例
Jul 10 Python
跟老齐学Python之玩转字符串(1)
Sep 14 Python
Python实现线程池代码分享
Jun 21 Python
使用Python保存网页上的图片或者保存页面为截图
Mar 05 Python
使用 Python 实现微信群友统计器的思路详解
Sep 26 Python
python将txt文件读取为字典的示例
Dec 22 Python
pip安装python库的方法总结
Aug 02 Python
Python 脚本的三种执行方式小结
Dec 21 Python
python访问hdfs的操作
Jun 06 Python
Pycharm自动添加文件头注释和函数注释参数的方法
Oct 23 Python
selenium3.0+python之环境搭建的方法步骤
Feb 01 Python
用Python远程登陆服务器的步骤
Apr 16 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
Excel数据导入Mysql数据库的实现代码
2008/06/05 PHP
基于JQuery实现鼠标点击文本框显示隐藏提示文本
2012/02/23 Javascript
Js获取下拉框选定项的值和文本的实现代码
2014/02/26 Javascript
三种检测iPhone/iPad设备方向的方法
2014/04/23 Javascript
Javascript URI 解析介绍
2015/03/15 Javascript
解决jQuery使用JSONP时产生的错误
2015/12/02 Javascript
js实现的页面矩阵图形变换特效
2016/01/26 Javascript
js实现小窗口拖拽效果
2016/12/03 Javascript
JavaScript中三个等号和两个等号你了解多少
2017/07/04 Javascript
Three.js利用性能插件stats实现性能监听的方法
2017/09/25 Javascript
bootstrap中selectpicker下拉框使用方法实例
2018/03/22 Javascript
JS实现图片转换成base64的各种应用场景实例分析
2018/06/22 Javascript
vue系列之requireJs中引入vue-router的方法
2018/07/18 Javascript
js replace替换字符串同时替换多个方法
2018/11/27 Javascript
LayUI数据接口返回实体封装的例子
2019/09/12 Javascript
python 实现文件的递归拷贝实现代码
2012/08/02 Python
使用python删除nginx缓存文件示例(python文件操作)
2014/03/26 Python
Android 兼容性问题:java.lang.UnsupportedOperationException解决办法
2017/03/19 Python
Python 类的特殊成员解析
2018/06/20 Python
在python image 中实现安装中文字体
2020/05/16 Python
浅谈Python 命令行参数argparse写入图片路径操作
2020/07/12 Python
PyCharm中关于安装第三方包的三个建议
2020/09/17 Python
详解如何在css中引入自定义字体(font-face)
2018/05/17 HTML / CSS
Uber Eats台湾:寻找附近提供送餐服务的餐厅
2018/05/07 全球购物
大学学年自我鉴定
2013/10/28 职场文书
大学生学习自我评价
2014/01/13 职场文书
运动会开幕式解说词
2014/02/05 职场文书
思想品德课教学反思
2014/02/10 职场文书
金融学专业大学生职业生涯规划
2014/03/07 职场文书
计算机专业应届生求职信
2014/04/06 职场文书
大学生就业自我推荐信
2014/05/10 职场文书
校本培训个人总结
2015/02/28 职场文书
学会掌握自己命运的十条黄金法则:
2019/08/08 职场文书
Matplotlib绘制混淆矩阵的实现
2021/05/27 Python
详细谈谈MYSQL中的COLLATE是什么
2021/06/11 MySQL
Python中的socket网络模块介绍
2022/07/23 Python