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项目发布为exe可执行程序过程分享
Oct 23 Python
Python实现测试磁盘性能的方法
Mar 12 Python
python OpenCV学习笔记实现二维直方图
Feb 08 Python
基于DATAFRAME中元素的读取与修改方法
Jun 08 Python
Python numpy中矩阵的基本用法汇总
Feb 12 Python
VSCode Python开发环境配置的详细步骤
Feb 22 Python
解决python文件双击运行秒退的问题
Jun 24 Python
bluepy 一款python封装的BLE利器简单介绍
Jun 25 Python
如何获取Python简单for循环索引
Nov 21 Python
python与pycharm有何区别
Jul 01 Python
如何使用 Python 读取文件和照片的创建日期
Sep 05 Python
最新pycharm安装教程
Nov 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
网站当前的在线人数
2006/10/09 PHP
php GD绘制24小时柱状图
2008/06/28 PHP
php实现memcache缓存示例讲解
2013/12/04 PHP
php使用fgetcsv读取csv文件出现乱码的解决方法
2014/11/08 PHP
php从给定url获取文件扩展名的方法
2015/03/14 PHP
php查找字符串中第一个非0的位置截取
2017/02/27 PHP
javascript字符串拼接的效率问题
2010/12/25 Javascript
onkeydown事件解决按回车键直接提交数据的需求
2013/04/11 Javascript
javascript学习笔记之函数定义
2015/06/25 Javascript
Bootstrap每天必学之面板
2015/11/30 Javascript
jQuery+HTML5+CSS3制作支持响应式布局时间轴插件
2016/08/10 Javascript
Angular和百度地图的结合实例代码
2016/10/19 Javascript
Vee-Validate的使用方法详解
2017/09/22 Javascript
nodejs简单访问及操作mysql数据库的方法示例
2018/03/15 NodeJs
vue-cli 组件的导入与使用教程详解
2018/04/11 Javascript
mocha的时序规则讲解
2019/02/16 Javascript
java实现单链表增删改查的实例代码详解
2019/08/30 Javascript
vue实现倒计时获取验证码效果
2020/04/17 Javascript
jQuery实现穿梭框效果
2021/01/19 jQuery
[00:09]DOTA2新版本PA至宝特效动作展示
2014/11/19 DOTA
Pytorch之view及view_as使用详解
2019/12/31 Python
pytorch中的自定义反向传播,求导实例
2020/01/06 Python
django和flask哪个值得研究学习
2020/07/31 Python
白兰氏健康Mall:BRAND’S
2017/11/13 全球购物
美国最流行的男士时尚网站:Touch of Modern
2018/02/05 全球购物
日本最佳原创设计品牌:Felissimo(芬理希梦)
2019/03/19 全球购物
Yahoo-PHP面试题3
2012/01/14 面试题
2014年三八妇女节活动方案
2014/02/28 职场文书
大学生志愿者活动总结
2014/06/27 职场文书
租房安全协议书
2014/08/20 职场文书
英语教师求职信范文
2015/03/20 职场文书
李强为自己工作观后感
2015/06/11 职场文书
《珍珠鸟》教学反思
2016/02/16 职场文书
2016年全国爱眼日宣传教育活动总结
2016/04/05 职场文书
Python利用folium实现地图可视化
2021/05/23 Python
浅谈如何提高PHP代码质量之端到端集成测试
2021/05/28 PHP