模板语言

  {{ 变量 }}

  {% 逻辑 %}

{{ 变量 }}

{{ 变量 }}中的点号

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

  {{ 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. mysql5.7 忘记root密码修改方式

    参考文档: http://www.jb51.net/article/77858.htm # /etc/init.d/mysql stop --停止mysql服务 # /work/program/mys ...

  2. Github 第三方授权登录教程

    Github 第三方授权登录教程 ####大致流程图 ####1.首先注册一个github帐号,Applications>Developer applications>Register a ...

  3. java-jpa-criteriaBuilder使用

    一个复杂的查询例子(包含常用的所有查询方法) CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder(); //查询结果所 ...

  4. Numpy 为运算

    Numpy “bitwise_” 开头的函数是位运算函数: Numpy 位运算包括以下几个函数: 函数 描述  bitwise_and  对数组元素执行位与操作  bitwise_or 对数组元素执行 ...

  5. leetcode295 Find Median from Data Stream

    """ Median is the middle value in an ordered integer list. If the size of the list is ...

  6. 分析配置DispatcherServlet类时load-on-startup标签作用

    <servlet> <servlet-name>DispatcherServlet</servlet-name> <servlet-class>org. ...

  7. APIView 的请求生命周期

    目录 APIView 的请求生命周期 请求解析模块 响应渲染模块 序列化组件 Django 配置 """ 1)应用是否需要在INSTALLED_APPS中注册 在没有使用 ...

  8. 【剑指Offer面试编程题】题目1517:链表中倒数第k个结点--九度OJ

    题目描述: 输入一个链表,输出该链表中倒数第k个结点. (hint: 请务必使用链表.) 输入: 输入可能包含多个测试样例,输入以EOF结束. 对于每个测试案例,输入的第一行为两个整数n和k(0< ...

  9. ROS学习笔记8-rqt_console和roslaunch

    本教程来自于:http://wiki.ros.org/ROS/Tutorials/UsingRqtconsoleRoslaunch rqt_console 和 rqt_logger_level 是ro ...

  10. Day3-G - Task HDU4864

    Today the company has m tasks to complete. The ith task need xi minutes to complete. Meanwhile, this ...