模板语言

  {{ 变量 }}

  {% 逻辑 %}

{{ 变量 }}

{{ 变量 }}中的点号

  用于取出字典/列表等类型数据的值

  {{ 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 模板渲染的更多相关文章

  1. Django—模板渲染

    参考文档: http://www.cnblogs.com/fnng/p/4373108.html https://code.ziqiangxuetang.com/django/django-intro ...

  2. Django模板渲染

    一 . 语法 # 关于模板渲染只需要记住两种语法就可以: 1.{{ }} # 里面写变量 2.{% %} # 里面写与逻辑相关的,比如for循环 二 . 变量名 在django的模板语言中按照语法: ...

  3. 关于Django模板渲染一个很重要的用途

    一般情况下我们在模板利用django的for标签循环生成html代码时,可以同时生成形如: "{% url 'dormitory:hygiene_detail' pk={{ id }} %} ...

  4. Django模板渲染——(二)

    模板标签 模板是由HTML代码和一些逻辑控制代码组成的,逻辑控制代码除了前面介绍的变量和过滤器,还要一个非常重要的模板标签.模板标签的语法规则是{% tag %},模板标签在渲染的过程中能提供任意的逻 ...

  5. Django模板渲染之自定义inclusion_tag详细使用

    inclusion_tag在使用的时候可以帮我们减少很多前端和后端重复的代码 逻辑图: inclusion_tag的作用是主页面以一定的语法给一个参数,调用某个函数,这个函数可以通过主页面给的参数做一 ...

  6. python Django教程 之模板渲染、循环、条件判断、常用的标签、过滤器

    python3.5 manage.py runserver python Django教程 之模板渲染.循环.条件判断.常用的标签.过滤器 一.Django模板渲染模板 1. 创建一个 zqxt_tm ...

  7. 初学Django基础01 建立工程,目录结构,常用配置,上下文管理,模板渲染

    django是python的web重量级框架,发展已经有10年多了,对应下面版本 Django 版本 Python 版本 1.8 2.7, 3.2 , 3.3, 3.4, 3.5 1.9, 1.10 ...

  8. Django模板与Vue.js冲突问题

    参考: https://my.oschina.net/soarwilldo/blog/755984 方法1:修改vue.js的默认的绑定符号 Vue.config.delimiters = [&quo ...

  9. django模板(一)

    模板(一) 实验简介 在前一章中,你可能已经注意到我们在例子视图中返回文本的方式有点特别. 也就是说,HTML被直接硬编码在 Python 代码之中. def current_datetime(req ...

随机推荐

  1. HTML的几个注意点

    一.HTML 1.HTML5有哪些新特性?新增的标签有哪些? 新特性: 语义标签——语义化标签使得页面的内容结构化,见名知义 增强型表单——拥有多个新的表单 Input 输入类型.这些新特性提供了更好 ...

  2. c#数据四种执行方法(ExecuteNonQuery)-----转载

    c#数据四种执行方法(ExecuteNonQuery)   1.使用ExecuteReader()操作数据库 2.使用ExecuteNonQuery()操作数据库 3.使用ExecuteScalar( ...

  3. PaperReading20200224

    CanChen ggchen@mail.ustc.edu.cn   BANANAS Motivation: This paper proposes a network performance pred ...

  4. linux上实现jmeter分布式压力测试(转)

    摘要:最近根据公司工作的需求,学习了一些压力测试的知识,目前,公司使用的是jmeter进行压力测试.下面就记录下近期的学习.我想将这次的博文分成三个部分:1.开始测试前的准备(测试环境的搭建)2.在一 ...

  5. Manthan, Codefest 19(Div. 1 + Div. 2)

    传送门 A. XORinacci 签到. Code /* * Author: heyuhhh * Created Time: 2020/2/26 9:26:33 */ #include <ios ...

  6. 模板+解题报告:luogu P3385 【模板】负环

    题目链接:P3385 [模板]负环 缩点板子. 看日报上说\(DFS\)会炸(我确实打炸了),就根据他的说明\(yy\)了\(BFS\),多一个记录步数的数组即可(我用的\(len[]\)),若\(l ...

  7. [FBCTF2019]Products Manager

    基于约束的SQL攻击 一.知识点: 1.数据库字符串比较: 在数据库对字符串进行比较时,如果两个字符串的长度不一样,则会将较短的字符串末尾填充空格,使两个字符串的长度一致,比如,字符串A:[Strin ...

  8. SpringBoot 静态资源的配置

    springboot默认的静态资源目录: classpath:/static classpath:/public classpath:/resources classpath:/META-INF/re ...

  9. 7.2 Varnish 模式

  10. 八: IO流,数据的读写传输

    IO流概括图: IO流的分类:  按流: 输入流(InputStream和Reader):从硬盘或者别的地方读入内存 输出流(OutputStream和Writer):从内存里向硬盘或别的地方输出 按 ...