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 相关文章推荐
Centos Python2 升级到Python3的简单实现
Jun 21 Python
Python基于列表list实现的CRUD操作功能示例
Jan 05 Python
python pycurl验证basic和digest认证的方法
May 02 Python
Python找出微信上删除你好友的人脚本写法
Nov 01 Python
解决python文件双击运行秒退的问题
Jun 24 Python
解决Django加载静态资源失败的问题
Jul 28 Python
Python解决pip install时出现的Could not fetch URL问题
Aug 01 Python
通过实例了解python property属性
Nov 01 Python
python 实现多线程下载m3u8格式视频并使用fmmpeg合并
Nov 15 Python
Python线程条件变量Condition原理解析
Jan 20 Python
Python socket服务常用操作代码实例
Jun 22 Python
浅谈keras中Dropout在预测过程中是否仍要起作用
Jul 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
国王的咖啡这么大来头,名字的由来是什么
2021/03/03 咖啡文化
实现“上一页”和“下一页按钮
2006/10/09 PHP
phpMyAdmin 链接表的附加功能尚未激活问题的解决方法(已测)
2012/03/27 PHP
Zend Studio去除编辑器的语法警告设置方法
2012/10/24 PHP
PHP中怎样防止SQL注入分析
2014/10/23 PHP
标准版Eclipse搭建PHP环境的详细步骤
2015/11/18 PHP
PHP闭包函数传参及使用外部变量的方法
2016/03/15 PHP
Laravel 类和接口注入相关的代码
2019/10/15 PHP
漂亮的提示信息(带箭头)
2007/03/21 Javascript
Jquery插件之多图片异步上传
2010/10/20 Javascript
js调用AJAX时Get和post的乱码解决方法
2013/06/04 Javascript
jquery 获取 outerHtml 包含当前节点本身的代码
2014/10/30 Javascript
NodeJS远程代码执行
2016/08/28 NodeJs
React中jquery引用的实现方法
2017/09/12 jQuery
微信小程序顶部可滚动导航效果
2017/10/31 Javascript
vue组件详解之使用slot分发内容
2018/04/09 Javascript
基于AngularJs select绑定数字类型的问题
2018/10/08 Javascript
实现高性能javascript的注意事项
2019/05/27 Javascript
JS实现的雪花飘落特效示例
2019/12/03 Javascript
JS中类的静态方法,静态变量,实例方法,实例变量区别与用法实例分析
2020/03/14 Javascript
[01:46]TI4西雅图DOTA2前线报道 中国选手抱团调时差
2014/07/08 DOTA
[03:39]这就是刀塔,我们是冠军!燃情短片讲述我们的DOTA故事
2019/07/02 DOTA
TF-IDF与余弦相似性的应用(一) 自动提取关键词
2017/12/21 Python
Python打包方法Pyinstaller的使用
2018/10/09 Python
Python Django view 两种return的实现方式
2020/03/16 Python
Python 如何调试程序崩溃错误
2020/08/03 Python
python中lower函数实现方法及用法讲解
2020/12/23 Python
Python实现钉钉/企业微信自动打卡的示例代码
2021/02/02 Python
领导的自我鉴定
2013/12/28 职场文书
最新大学职业规划书范文
2013/12/30 职场文书
简历中自我评价怎么写
2014/02/12 职场文书
关于长城的导游词
2015/01/30 职场文书
采购员岗位职责
2015/02/03 职场文书
虎兄虎弟观后感
2015/06/12 职场文书
导游词之井冈山
2019/11/20 职场文书
C3 线性化算法与 MRO之Python中的多继承
2021/10/05 Python