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 ...
随机推荐
- IOS 错误原因
当xcode提示以下错误时,很可能的原因是由于ViewController中的View在Controller中连接了outlet,然后又删除了Controller中对应的属性,导致xcode找不到这个 ...
- Redis调用
Redis帮助类 using StackExchange.Redis; using System; using System.Collections.Generic; using System.Lin ...
- 四 动态sql 标签的使用(if&where&sql片段&foreach)
if标签的使用: userMapper.xml userMapper.java junit: where标签: 注意:写了where标签就不用手动写where语句 sql片段的设置和调用: forr ...
- ZCGL大数据平台日常运维问题与解决方法
问题:HBase停止 解决方法:重新启动HBase,如下所示 表层问题:插入和查询HBase速度比较慢 排查一,查看HBase节点状态,发现正常运行: 排查二,查看访问HBase服务的状态,发现服务停 ...
- 提高 Java 代码性能的各种技巧
Java 6,7,8 中的 String.intern – 字符串池 这篇文章将要讨论 Java 6 中是如何实现 String.intern 方法的,以及这个方法在 Java 7 以及 Java 8 ...
- zookeeper logs is missing zookeeper 日志丢失
ERROR [main:QuorumPeerMain@85] - Invalid config, exiting abnormally Invalid config, exiting abnormal ...
- CSP-S 2019 复赛游记
自闭游记 >_< Day 0 随便敲了一些板子 当然打了摆. 奶人的话写满了俩黑板啊,没人奶我可海星. 晚上没怎么打摆,随便敲了几道板子,然后很早就回去睡了. Day 1 平静地出发了.. ...
- 物流跟踪 调用快递鸟API
概要:关于调用快递鸟API,我有几句话想说,有几行代码想写 业务需求:就是做做商城,卖卖东西.然后需要做个物流跟踪的功能 需要获取的信息大概就是这个样子 现在看这个快递怎么这么慢 如何实现? 直接调用 ...
- Lesson 7 Bats
In what way does echo-location in bats play a utilitarian role? Not all sounds made by animals serve ...
- Mozilla Firefox 68 正式发布下载:对刚Chrome
Mozilla Firefox 68开源和跨平台Web浏览器现在正式发布,可以下载适用于GNU/Linux,Mac和Windows平台的Firefox 68了. Firefox 68网络浏览器现在可以 ...