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字符串替换实例分析
May 11 Python
Python序列操作之进阶篇
Dec 08 Python
Python使用当前时间、随机数产生一个唯一数字的方法
Sep 18 Python
python生成excel的实例代码
Nov 08 Python
Python运维之获取系统CPU信息的实现方法
Jun 11 Python
详解Python的三种可变参数
May 08 Python
Python在Matplotlib图中显示中文字体的操作方法
Jul 29 Python
Python : turtle色彩控制实例详解
Jan 19 Python
python实现opencv+scoket网络实时图传
Mar 20 Python
Python 读写 Matlab Mat 格式数据的操作
May 19 Python
Python基础之元编程知识总结
May 23 Python
详解pytorch创建tensor函数
Mar 22 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
在任意字符集下正常显示网页的方法二(续)
2007/04/01 PHP
使用php判断浏览器的类型和语言的函数代码
2013/02/28 PHP
PHP解析RSS的方法
2015/03/05 PHP
解决PhpStorm64不能启动的问题
2020/06/20 PHP
面向对象的Javascript之一(初识Javascript)
2012/01/20 Javascript
JS+CSS实现感应鼠标渐变显示DIV层的方法
2015/02/20 Javascript
JavaScript中join()方法的使用简介
2015/06/09 Javascript
javascript解析xml实现省市县三级联动的方法
2015/07/25 Javascript
jfinal与bootstrap的登录跳转实战演习
2015/09/22 Javascript
javascript每日必学之多态
2016/02/23 Javascript
js事件冒泡与事件捕获详解
2017/02/20 Javascript
Vue制作Todo List网页
2017/04/26 Javascript
原生js实现简单的焦点图效果实例
2017/12/14 Javascript
JavaScript 面向对象基础简单示例
2019/10/02 Javascript
解决vue axios跨域 Request Method: OPTIONS问题(预检请求)
2020/08/14 Javascript
如何使用 JavaScript 操作浏览器历史记录 API
2020/11/24 Javascript
[36:19]2018DOTA2亚洲邀请赛 小组赛 A组加赛 Newbee vs LGD
2018/04/03 DOTA
状态机的概念和在Python下使用状态机的教程
2015/04/11 Python
深入理解python try异常处理机制
2016/06/01 Python
win10下Python3.6安装、配置以及pip安装包教程
2017/10/01 Python
Python 使用PIL中的resize进行缩放的实例讲解
2018/08/03 Python
Django使用Channels实现WebSocket的方法
2019/07/28 Python
Django实现文件上传下载功能
2019/10/06 Python
Python flask框架如何显示图像到web页面
2020/06/03 Python
Python3如何使用多线程升程序运行速度
2020/08/11 Python
美国最值得信赖的宠物药房:Allivet
2019/03/23 全球购物
德国、奥地利和瑞士最大的旅行和度假门户网站:HolidayCheck
2019/11/14 全球购物
亲子拓展活动方案
2014/02/20 职场文书
新闻报道策划方案
2014/06/11 职场文书
中文专业求职信
2014/06/20 职场文书
毕业生找工作求职信
2014/08/05 职场文书
镇党政领导班子民主生活会思想汇报
2014/10/11 职场文书
三好学生个人总结
2015/02/15 职场文书
二婚主持词
2015/06/30 职场文书
十大最强飞行系宝可梦,BUG燕上榜,第二是飞行系王者
2022/03/18 日漫
将MySQL的表数据全量导入clichhouse库中
2022/03/21 MySQL