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操作日期和时间的方法
Mar 11 Python
Python安装第三方库及常见问题处理方法汇总
Sep 13 Python
关于Python面向对象编程的知识点总结
Feb 14 Python
python处理csv中的空值方法
Jun 22 Python
Python3.5运算符操作实例详解
Apr 25 Python
python3下载抖音视频的完整代码
Jun 05 Python
django之使用celery-把耗时程序放到celery里面执行的方法
Jul 12 Python
python防止随意修改类属性的实现方法
Aug 21 Python
Jupyter加载文件的实现方法
Apr 14 Python
将python字符串转化成长表达式的函数eval实例
May 11 Python
python3美化表格数据输出结果的实现代码
Apr 14 Python
Python帮你解决手机qq微信内存占用太多问题
Feb 15 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
Terran历史背景
2020/03/14 星际争霸
四月新番又没了,《Re:从零开始的异世界生活》第二季延期至7月播出
2020/05/06 日漫
PHP新手NOTICE错误常见解决方法
2011/12/07 PHP
PHP生成唯一的促销/优惠/折扣码(附源码)
2012/12/28 PHP
jQuery中的RadioButton,input,CheckBox取值赋值实现代码
2014/02/18 PHP
PHP进行批量任务处理不超时的解决方法
2016/07/11 PHP
input的focus方法使用
2010/03/13 Javascript
js获取height和width的方法说明
2013/01/06 Javascript
javascript中的绑定与解绑函数应用示例
2013/06/24 Javascript
js查找节点的方法小结
2015/01/13 Javascript
JQuery中DOM事件合成用法实例分析
2015/06/13 Javascript
js实现带圆角的两级导航菜单效果代码
2015/08/24 Javascript
JavaScript判断数组是否存在key的简单实例
2016/08/03 Javascript
AngularJS过滤器filter用法总结
2016/12/13 Javascript
node.js入门教程之querystring模块的使用方法
2017/02/27 Javascript
JavaScrpt的面向对象全面解析
2017/05/09 Javascript
JS判断时间段的实现代码
2017/06/14 Javascript
Axios学习笔记之使用方法教程
2017/07/21 Javascript
深入浅析angular和vue还有jquery的区别
2018/08/13 jQuery
基于nodejs的雪碧图制作工具的示例代码
2018/11/05 NodeJs
puppeteer实现html截图的示例代码
2019/01/10 Javascript
JS通过识别id、value值对checkbox设置选中状态
2020/02/19 Javascript
js实现时钟定时器
2020/03/26 Javascript
python如何通过twisted实现数据库异步插入
2018/03/20 Python
详解使用双缓存解决Canvas clearRect引起的闪屏问题
2019/04/29 HTML / CSS
微软香港官网及网上商店:Microsoft HK
2016/09/01 全球购物
视图的作用
2014/12/19 面试题
初中学生评语大全
2014/04/24 职场文书
关于保护环境的建议书
2014/05/13 职场文书
意外伤害赔偿协议书
2014/09/16 职场文书
酒店工程部岗位职责
2015/02/12 职场文书
单位介绍信格式范文
2015/05/04 职场文书
感恩的心主题班会
2015/08/12 职场文书
2019 入党申请书范文
2019/07/10 职场文书
mysql如何能有效防止删库跑路
2021/10/05 MySQL
Python OpenCV超详细讲解基本功能
2022/04/02 Python