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的内存泄漏及gc模块的使用分析
Jul 16 Python
零基础写python爬虫之HTTP异常处理
Nov 05 Python
微信跳一跳游戏python脚本
Apr 01 Python
python正则表达式及使用正则表达式的例子
Jan 22 Python
python抓取网页中链接的静态图片
Jan 29 Python
通过pykafka接收Kafka消息队列的方法
Dec 27 Python
Python爬虫爬取Bilibili弹幕过程解析
Oct 10 Python
Python Django模板之模板过滤器与自定义模板过滤器示例
Oct 18 Python
Pytorch mask_select 函数的用法详解
Feb 18 Python
使用python客户端访问impala的操作方式
Mar 28 Python
在TensorFlow中实现矩阵维度扩展
May 22 Python
django 获取字段最大值,最新的记录操作
Aug 09 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代码质量36计
2012/09/05 PHP
ThinkPHP之getField详解
2014/06/20 PHP
php实现Linux服务器木马排查及加固功能
2014/12/29 PHP
php中mysql操作buffer用法详解
2015/03/19 PHP
PHP中把错误日志保存在系统日志中(Windows系统)
2015/06/23 PHP
php生成固定长度纯数字编码的方法
2015/07/09 PHP
PHP解耦的三重境界(浅谈服务容器)
2017/03/13 PHP
Laravel 5.5基于内置的Auth模块实现前后台登陆详解
2017/12/21 PHP
使用Git实现Laravel项目的自动化部署
2019/11/24 PHP
Jquery Ajax学习实例3 向WebService发出请求,调用方法返回数据
2010/03/16 Javascript
鼠标拖动实现DIV排序示例代码
2013/10/14 Javascript
JavaScript生成随机数的4种自定义函数分享
2015/02/28 Javascript
jQuery使用load()方法载入另外一个网页文件内的指定标签内容到div标签的方法
2015/03/25 Javascript
谈谈JSON对象和字符串之间的相互转换JSON.stringify(obj)和JSON.parse(string)
2015/10/01 Javascript
jquery 表单验证之通过 class验证表单不为空
2015/11/02 Javascript
jquery UI Datepicker时间控件的使用方法(终结版)
2015/11/07 Javascript
jQuery简单实现点击文本框复制内容到剪贴板上的方法
2016/08/01 Javascript
浅谈javascript中的Function和Arguments
2016/08/30 Javascript
JS判断来路是否是百度等搜索索引进行弹窗或自动跳转的实现代码
2016/10/09 Javascript
js实现文字跑马灯效果
2017/02/23 Javascript
微信小程序 wx.login解密出现乱码的问题解决办法
2017/03/10 Javascript
react.js CMS 删除功能的实现方法
2017/04/17 Javascript
vue-router 中 meta的用法详解
2019/11/01 Javascript
element-ui table组件如何使用render属性的实现
2019/11/04 Javascript
Js数组扁平化实现方法代码总汇
2020/11/11 Javascript
微信小程序实现登录注册功能
2020/12/29 Javascript
Python如何import文件夹下的文件(实现方法)
2017/01/24 Python
Python获取二维矩阵每列最大值的方法
2018/04/03 Python
Python命名空间的本质和加载顺序
2018/12/17 Python
django实现用户注册实例讲解
2019/10/30 Python
python 实现目录复制的三种小结
2019/12/04 Python
python利用xpath爬取网上数据并存储到django模型中
2021/02/26 Python
美国当红的名品折扣网:Gilt Groupe
2016/08/15 全球购物
法人委托书范本
2014/04/04 职场文书
个人四风问题对照检查材料思想汇报
2014/10/06 职场文书
Python编解码问题及文本文件处理方法详解
2021/06/20 Python