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如何避免循环导入问题详解
Sep 14 Python
python3.6 +tkinter GUI编程 实现界面化的文本处理工具(推荐)
Dec 20 Python
Python面向对象之继承代码详解
Jan 29 Python
python编程测试电脑开启最大线程数实例代码
Feb 09 Python
pycharm下查看python的变量类型和变量内容的方法
Jun 26 Python
为何人工智能(AI)首选Python?读完这篇文章你就知道了(推荐)
Apr 06 Python
Python传递参数的多种方式(小结)
Sep 18 Python
python 使用while写猜年龄小游戏过程解析
Oct 07 Python
python sorted函数原理解析及练习
Feb 10 Python
python logging.info在终端没输出的解决
May 12 Python
Pandas DataFrame求差集的示例代码
Dec 13 Python
Python预测分词的实现
Jun 18 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
星际实力自我测试
2020/03/04 星际争霸
兼容firefox,chrome的网页灰度效果
2011/08/08 PHP
php 运算符与表达式详细介绍
2016/11/30 PHP
深入认识JavaScript中的函数
2007/01/22 Javascript
捕获关闭窗口的脚本
2009/01/10 Javascript
js 表单验证方法(实用)
2009/04/28 Javascript
JavaScript 反科里化 this [译]
2012/09/20 Javascript
JavaScript对象和字串之间的转换实例探讨
2013/04/21 Javascript
JavaScript函数模式详解
2014/11/07 Javascript
js实现双击图片放大单击缩小的方法
2015/02/17 Javascript
jquery实现页面关键词高亮显示的方法
2015/03/12 Javascript
javascript控制台详解
2015/06/25 Javascript
JavaScript实现将文本框的值插入指定位置的方法
2015/08/13 Javascript
利用angular.copy取消变量的双向绑定与解析
2016/11/25 Javascript
Bootstrap输入框组件使用详解
2017/06/09 Javascript
Thinkphp5微信小程序获取用户信息接口的实例详解
2017/09/26 Javascript
Vue.js实现列表清单的操作方法
2017/11/15 Javascript
JS获取当前时间的年月日时分秒及时间的格式化的方法
2019/12/18 Javascript
Vue+Java 通过websocket实现服务器与客户端双向通信操作
2020/09/22 Javascript
[02:49]DOTA2完美大师赛首日观众采访
2017/11/23 DOTA
python支持断点续传的多线程下载示例
2014/01/16 Python
python生成日历实例解析
2014/08/21 Python
Python使用xlwt模块操作Excel的方法详解
2018/03/27 Python
Python实现读取Properties配置文件的方法
2018/03/29 Python
Python使用线程来接收串口数据的示例
2019/07/02 Python
h5移动端调用支付宝、微信支付的实现
2020/06/08 HTML / CSS
美国伊甸园兄弟种子公司:Eden Brothers
2018/07/01 全球购物
美国最大的户外装备和服装购物网站:Backcountry
2019/10/15 全球购物
执行力心得体会
2013/12/31 职场文书
企业军训感想
2014/02/07 职场文书
《手指教学》反思
2014/02/14 职场文书
工程项目经理任命书
2014/06/05 职场文书
签字仪式主持词
2015/07/03 职场文书
2016年党员公开承诺书格式范文
2016/03/24 职场文书
浅谈css实现背景颜色半透明的两种方法
2021/12/06 HTML / CSS
MySQL详细讲解变量variables的用法
2022/06/21 MySQL