首页 > 技术文章 > django模板使用

xcool 2018-11-03 15:20 原文


概述

模板由两部分组成,HTML代码,逻辑控制代码,作用:快速生成HTML页面,优点:模板的设计实现了业务逻辑与现实内容的分离


定义模板

挖坑与继承

模板继承可以减少页面的内容的重复定义,实现页面的重用,在父模板中预留区域,子模板去填充。

block标签

父html页面挖坑

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
	{% block content %}
	
	{% endblock %}
</body>
</html>

子html页面继承

	{% extends 'father.html' %}

	{% block content %}
		<!--写子模板的内容,会重写父模板,显示子模板内容-->
		<!--不写内容调用父模板用super-->
		{{ block.super }} 
	{% endblock %}

if标签

	{% if 表达式1 %}
		{# 语句1 #}
	{% elif %}
		{# 表达式2 #}
	{% else %}
		{# 表达式3#}
	{% endif %}


for标签

	{% for 变量 in 迭代对象 %}	
		{# 语句1 #}
	{% empty %}
		{# 语句2 #}
	{% endfor %}


comment标签

	{% comment %}
		{# 多行注释 #}
		{# {# 单行注释 #} #}
	{% endcomment %}

ifequal、ifnotequal标签

	{% ifequal a b %}
		{# a,b是否相等#}
	{% endifequal %}
	
	{% ifnotequal a b %}
		{# 判断a,b是否不等 #}
	{% endifnotequal %}

url标签

	{% url 'namespace:name' %}
		{# 反向解析 #}

csrf_token标签

	{% csrf_token %}
		{# 用于跨站请求伪造保护 #}

autoescape标签

	{% autoescape off %}
		{{code}}
		{# 用于HTML转义 #}
    {% endautoescape %}



过滤器

lower

	{{变量|lower}}
	{# 将变量转换为小写显示#}

upper

	{{变量|upper}}
	{# 将变量转换为大写显示#}

join

	{{str|join:'*'}}
	{# 将传过来的str用*连接起来#}
	

date

	{{date|date:'Y-m-d'}}
	{# 设置日期格式 #}

html转移

	{{code|escape}}
	{{code|safe}}

加减乘除p>

	{{num|add:10}}
		{# 加10 #}
	{{num|add:-5}}
		{# 减5 #}
	{% widthratio num 1 5 %}
		{# 乘5 #}
	{% widthratio num 1 5%}
		{# 除5#}
	

CSRF

跨站请求伪造:某些恶意网站包含链接、表单、按钮、js,利用登陆用户在浏览器中认证,从而攻击服务.

防止CSRF:在settings.py文件中的MIDDLEWARE增加'django.middleware.csrf.CsrfViewMiddleware'

推荐阅读