Django 模板渲染
模板语言
{{ 变量 }}
{% 逻辑 %}
{{ 变量 }}
{{ 变量 }}中的点号
用于取出字典/列表等类型数据的值
{{ list.2 }} 获取列表list中索引为2的值
{{ dict.name }} 获取字典中name的值
{{ 变量 }}内置的过滤器
以|分隔
{{ a|safe }} 于django输出前,要求不对字符进行转义。自动转义关闭时自动失效
{{ time|date:'Y-m-d H:i:s' }} 格式化输出时间 年月日时分秒
{{ list|join:',' }} 相当于 ‘,’.join(list)
{{ str|truncatechars:8 }} 显示内容为5个字符与3个点号 共8个字符
{{ str|truncatechars:8 }} 同上 显示单位为单词 按空格辨别
{{ str|length }} str的长度
{{ list|slice:'0-2' }} 切片索引0-2不含2
{{ var|default:'xxx' }} 为var设置默认值为‘xxx’
{{ str|lower }}{{ str|upper }} 输出显示为小/大写
{{ int|filesizeformat }} 转为内存大小单位 类似于2GB 1TB
{% 逻辑 %}
for循环

<ul>
{% for student_name in name %}
<li>{{ student_name }}</li>
{% empty %} //若name为空则于此结束并打印None
<li>None</li>
{% endfor %} //正常结束for循环
</ul>

if 条件判断语句

{% if num > 100 %} //比较运算符两边必须留下空格才可以识别
<p>大于100</p>
{% elif num == 200 %}
<p>等于100</p>
{% else %}
<p>小于100</p>
{% endif %}

csrf_token
防御跨站请求伪造,这个标签用于跨站请求伪造保护
<form action='/main_h/' method="post">
{% csrf_token %} //写在form表单内
<input type="text" name="usm">
<input type="password" name="pwd">
<input type="submit">
</form>
装饰器的形式实现防御跨站请求伪造

from django.views.decorators.csrf import csrf_exempt,csrf_protect
# 于views.py文件中导入csrf_exempt,csrf_protect
@csrf_protect # 强制放行csrf认证,即便全局配置了csrf认
def main_h(request):
return render(request,'main_h.html')
@csrf_exempt # 强制进行csrf认证,即便全局没有配置csrf认证
def dome(request):
return render(request,'dome.html')

模板继承
1 创建一个模板.html文件, 2 {% extends '模板.html' %} 3 模板.html {% block content %} xxxxxxx{% endblock %} 还可以指定名字{% endblock content%} 4 继承模板的文件里面 {% block content %} 自己html里面的内容{% endblock %} 5 保留模板内容的写法 {% block content %} {{ block.super }}自己html里面的内容{% endblock %} 模板

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
div{
float: left;
width: 20%;
}
</style>
</head>
<body>
<h1>Welcome</h1>
{% block head %}
<h1 style="background: antiquewhite">这是模板的大概率应用部分</h1>
{% endblock %}
# 设置可修改内容
<div>
<p>标题一</p>
<p>标题二</p>
<p>标题三</p>
</div>
{% block name %}
<span>主页</span>
{% endblock %}
# 设置可修改内容
</body>
</html>

继承

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
{% extends "main_h.html" %}
# 继承模板HTML文件
{% block head %}
{{ block.super }}
{% endblock %}
# 继承延用内容
{% block name %}
分页1
{% endblock %}
# 继承修改内容
</body>
</html>

组件
将一个完整功能模块,放到一个hmtl文件中,使用这个模块的其他页面,直接在页面中引入即可,
引入方式{% include '模块.html' %} ,任意位置引入
ps:(仅引入body内容) 组件HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
h1{
width: 100%;
height: 5%;
background: aqua;
}
</style>
</head>
<body>
<h1>这是组件内容</h1>
</body>
</html>

引入组件 {% include 'xxx.html' %}

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body> {% include 'h1_h.html' %} //引入组件 ps:(与模板冲突,只会显示模板而不显示组件) </body>
</html>

自定义标签与过滤器
1 app应用文件夹中创建一个叫做templatetags的文件夹
2 创建一个py文件,例如:mytag.py
3 mytag.py,
from django import template
register = template.Library() #register变量必须是这个名字
过滤器:
@register.filter
def xxx(): 参数最多两个
return 'xxx'
标签:
@register.simple_tag
def sss(): 参数可以多个
return 'xxx' 标签:
@register.inclusion_tag('html文件')
def aaa(): 参数可以多个
return {'xx':'xxxxx'} html文件中的使用
<h1>
{# {{ num|xxx:'11,23,33'}}#}
{{ num|xxx:20 }}
{% if num|xxx:20 > 2000 %}
<h2>大于2千</h2>
{% else %}
<h2>小于等于2千</h2>
{% endif %} </h1> <h1>
{% sss num 10 15 %}
</h1> <h1>
{% aaa %}
</h1>
pydiango1\app01\templatetags\mytag.py文件下

from django import template
from django.utils.safestring import mark_safe
register=template.Library() @register.simple_tag
def sum_max(a,b,c,d):
num=a*b*c*d
return num
# 自定义标签 可接收多个参数 @register.filter
def num_20(num1,num2):
num1*=num2
return num1
# 自定义过滤器 最多接收2个参数

HTML文件下
<!DOCTYPE html>
<html lang="en"> <head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body> {% load mytag %} //引入mytag.py文件
{% include 'h1_h.html' %}
{% sum_max 7 8 9 10 %} <p>{{ num|num_20:2 }}</p>
</body>
</html>
Django 模板渲染的更多相关文章
- Django—模板渲染
参考文档: http://www.cnblogs.com/fnng/p/4373108.html https://code.ziqiangxuetang.com/django/django-intro ...
- Django模板渲染
一 . 语法 # 关于模板渲染只需要记住两种语法就可以: 1.{{ }} # 里面写变量 2.{% %} # 里面写与逻辑相关的,比如for循环 二 . 变量名 在django的模板语言中按照语法: ...
- 关于Django模板渲染一个很重要的用途
一般情况下我们在模板利用django的for标签循环生成html代码时,可以同时生成形如: "{% url 'dormitory:hygiene_detail' pk={{ id }} %} ...
- Django模板渲染——(二)
模板标签 模板是由HTML代码和一些逻辑控制代码组成的,逻辑控制代码除了前面介绍的变量和过滤器,还要一个非常重要的模板标签.模板标签的语法规则是{% tag %},模板标签在渲染的过程中能提供任意的逻 ...
- Django模板渲染之自定义inclusion_tag详细使用
inclusion_tag在使用的时候可以帮我们减少很多前端和后端重复的代码 逻辑图: inclusion_tag的作用是主页面以一定的语法给一个参数,调用某个函数,这个函数可以通过主页面给的参数做一 ...
- python Django教程 之模板渲染、循环、条件判断、常用的标签、过滤器
python3.5 manage.py runserver python Django教程 之模板渲染.循环.条件判断.常用的标签.过滤器 一.Django模板渲染模板 1. 创建一个 zqxt_tm ...
- 初学Django基础01 建立工程,目录结构,常用配置,上下文管理,模板渲染
django是python的web重量级框架,发展已经有10年多了,对应下面版本 Django 版本 Python 版本 1.8 2.7, 3.2 , 3.3, 3.4, 3.5 1.9, 1.10 ...
- Django模板与Vue.js冲突问题
参考: https://my.oschina.net/soarwilldo/blog/755984 方法1:修改vue.js的默认的绑定符号 Vue.config.delimiters = [&quo ...
- django模板(一)
模板(一) 实验简介 在前一章中,你可能已经注意到我们在例子视图中返回文本的方式有点特别. 也就是说,HTML被直接硬编码在 Python 代码之中. def current_datetime(req ...
随机推荐
- Django下关于session的使用
一.Session的概念 cookie是在浏览器端保存键值对数据,而session是在服务器端保存键值对数据 session 的使用依赖 cookie:在使用Session后,会在Cookie中存储一 ...
- 数组NSArray与NSMutableArray的常用方法
数组中可以放任何类型的数据,并且一个数组中的元素类型可以不一致.只要是(id类型)对象. NSArray 1.初始化 NSArray *array = @[]; 2.初始化,最后需要以nil结尾 NS ...
- leetcode295 Find Median from Data Stream
""" Median is the middle value in an ordered integer list. If the size of the list is ...
- ionic3记录之栅格布局使文字居中
{ display:flex; align-items:center; } 未完待续...
- Android 获取当前日期距离过期时间的日期差值的完整方法直接使用
/*** * 获取当前日期距离过期时间的日期差值 * @param endTime * @return */public String dateDiff(String endTime) { Strin ...
- 搭建solr集群的时候出现 ./zkcli.sh:行13: unzip: 未找到命令
主要的原因是: linux系统下面没有安装压缩解压工具 zip 和 unzip:需要我们自己手动的安装: 利用yum命令安装即可: yum install -y unzip zip
- java关于hasNext()
编写一段程序实现如果输入的一组数中含非整数数字,输出数字相加的和以及"attention"字符,如果全部是数字便输出数字的和. 程序1: package mian; import ...
- 【Game学习随笔01】挑战任务01
今天是2020年2月6日,时间过得好快,以至于我在写到时间会下意识写成2019年…… 看来全国肺炎情况进一步升温了,以至于我家所在的小区进行了命令封锁通知,所以出行不再像以前那么自由了,不管怎样,给战 ...
- C语言学习从入门到精通书籍,10万读者都认可
C语言程序设计从入门到精通 10万读者认可的编程图书精粹 零基础自学编程的入门图书 详解C语言编程思想和核心技术 很多初学者,对C语言.c++的概念都是模糊不清的,C语言.c++是什么,能做什么,学的 ...
- Hibernate一对多(多对一)外键设置汇总
我打算在角色表(role)中添加一个帐号表(account)的外键(accountId),步骤如下: 1.首先在角色表(role)中添加列. 添加语句:alter table role add(acc ...