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 相关文章推荐
Windows下实现Python2和Python3两个版共存的方法
Jun 12 Python
Windows上使用virtualenv搭建Python+Flask开发环境
Jun 07 Python
python多行字符串拼接使用小括号的方法
Mar 19 Python
Django框架的中的setting.py文件说明详解
Oct 15 Python
Django model反向关联名称的方法
Dec 15 Python
python查询文件夹下excel的sheet名代码实例
Apr 02 Python
python异常触发及自定义异常类解析
Aug 06 Python
python随机生成大小写字母数字混合密码(仅20行代码)
Feb 01 Python
关于jupyter打开之后不能直接跳转到浏览器的解决方式
Apr 13 Python
Opencv常见图像格式Data Type及代码实例
Nov 02 Python
python爬虫使用scrapy注意事项
Nov 23 Python
python 制作网站小说下载器
Feb 20 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
星际争霸 Starcraft 秘技补丁
2020/03/14 星际争霸
新版PHP将向Java靠拢
2006/10/09 PHP
比较时间段一与时间段二是否有交集的php函数
2011/05/31 PHP
控制PHP的输出:缓存并压缩动态页面
2013/06/11 PHP
php将csv文件导入到mysql数据库的方法
2014/12/24 PHP
php在linux下检测mysql同步状态的方法
2015/01/15 PHP
阿里云的WindowsServer2016上部署php+apache
2018/07/17 PHP
IE8下关于querySelectorAll()的问题
2010/05/13 Javascript
JavaScript中的面向对象介绍
2012/06/30 Javascript
javascript实现控制文字大中小显示
2015/04/28 Javascript
jquery显示loading图片直到网页加载完成的方法
2015/06/25 Javascript
JavaScript实现简单的星星评分效果
2017/05/18 Javascript
详解vue项目构建与实战
2017/06/27 Javascript
原生js+cookie实现购物车功能的方法分析
2017/12/21 Javascript
小程序click-scroll组件设计
2019/06/18 Javascript
jquery实现直播弹幕效果
2019/11/28 jQuery
Vue通过阿里云oss的url连接直接下载文件并修改文件名的方法
2020/12/25 Vue.js
python实现图片批量剪切示例
2014/03/25 Python
Windows下PyMongo下载及安装教程
2015/04/27 Python
python使用mailbox打印电子邮件的方法
2015/04/30 Python
python实现字符串和字典的转换
2018/09/29 Python
python中append实例用法总结
2019/07/30 Python
python自动化工具之pywinauto实例详解
2019/08/26 Python
Python基于locals返回作用域字典
2020/10/17 Python
Strawberrynet草莓网新加坡站:护肤、彩妆、香水及美发产品
2018/08/31 全球购物
英国在线女鞋目的地:SIMMI
2018/12/27 全球购物
领先的荷兰线上超市:荷兰之家Holland at Home(支持中文)
2021/01/21 全球购物
入党自我评价优缺点
2014/01/25 职场文书
销售员个人求职的自我评价
2014/02/10 职场文书
党员领导干部廉洁从政承诺书
2014/03/27 职场文书
安全生产计划书
2014/05/04 职场文书
给医院的感谢信
2015/01/21 职场文书
自我评价优缺点范文
2015/03/11 职场文书
2016暑期社会实践新闻稿
2015/11/25 职场文书
2016年党校科级干部培训班学习心得体会
2016/01/06 职场文书
OpenCV-Python实现轮廓的特征值
2021/06/09 Python