Django 第五天

模板

			概述:
					模板由两部分组成:
							HTMl代码
							逻辑控制代码:
									变量、标签、过滤器
					作用:
							很便利的生成HTML
					优点:
							模板的设计实现了业务逻辑(view)与显示内容(template)的分离,一个视图可以使用任意一个模板,一个模板可以供多个视图使用
					模板处理:
							加载:
									根据给定的标识找到模板然后预处理,通常会将它编译好放在内存中
							渲染:
									使用Context数据对模板插值并返回生成的字符串
			定义模板:
					变量:
							视图传递给模板的数据
							要遵守标识符规则
							语法:{{ var }}
							注意:如果使用的变量不存在,则插入的是空字符串
							在模板中使用点语法:
									字典查询
									属性或方法
									数字索引
							在模板中调用对象的方法:
									注意:
											不能传递参数
					标签:
							语法:{% tag %}
							作用:
									在输出中创建文本
									控制逻辑和循环控制
							if:格式:
{% if 表达式 %}
	语句
{% endif %}
{% if 表达式 %}
	语句1
{% else %}
	语句2
{% endif %}
{% if 表达式1 %}
	语句1
{% elif 表达式2 %}
	语句2
...
{% else %}
	语句n
{% endif %}
							for:
									格式:
{% for 变量 in 列表 %}
	语句
{% endfor %}
{% for 变量 in 列表 %}
	语句1
{% empty %} # 列表为空或不存在时执行语句2
	语句2
{% endfor %}
{{forloop.counter}} # 表示当前是第几次循环	
							comment:
									作用:注释多行
									语法:
{% comment %}
	注释内容
{% endcomment %}
							ifequal/ifnotequal:
									作用:判断相等或不相等
									格式:
{% ifequal 值12 %}
	语句
{% endifequal%}
{% ifnotequal 值12 %}
	语句
{% endifnotequal%}
							include:
									作用:加载模板并以标签内的参数渲染
									格式:{% include '模板目录' 参数1 参数2 %}
							url:
									作用:反向解析
									格式:{% url'namespace:name' p1 p2 %}
							csrf_token:
									作用:用于跨站请求伪造保护
									格式:{% csrf_token %}
							block、extends:
									作用:用户模板的继承
							autoescape:
									作用:用于HTML转义
							
					过滤器:
							语法:{{  var|过滤器 }}
							作用:在变量被显示前,修改
							lower
							upper
							过滤器可以传递参数,参数用引号引起来:
									join:格式:列表|join:‘#’
									示例:<h1> {{ list|join:'#' }} </h1>
							如果一个变量没有被提供,或值为false、空,可以使用默认值:
									default:格式:{{ var|default:'price' }}
												  示例:<h1> {{ text|default:'空' }} </h1>
							根据给定格式转换为字符串:
									date:格式:{{ date|date:'y-m-d' }}
							HTML转义:
									escape
							判断奇数偶数:
{% if forloop.counter|divisibleby:2 %}
	语句1
{% else %}
	语句2
{% endif %}
							加减乘除:
{{ num|add:price }} # 加法
{{ num|add:-price }} # 减法
< (num/n1) *n2 >
{% widthradio price n1 n2 %} # 乘法
{% widthradio price n1 n2 %} # 除法法
					注释:
							单行注释:
									语法:{#  #}
							多行注释:
									见‘comment’过滤器
			反向解析:
# 项目urls.py 文件中 加入namespace属性
re_path(r'^', include(('myApp.urls', 'myApp'), namespace="myApp"))
# app应用中urls.py 文件中 加入name属性
url(r'^login/$', views.login, name="login")
# 前端
<a href="{% url 'myApp:login' %}">点击</a>
			模板继承:
					作用:
							可以减少页面的内容的重复定义,实现页面重用
					block标签:
							在父模板中预留区域,子模板去填充
							语法:
								{% block 标签名 %}
								{% endblock 标签名 %}
					extends标签:
							继承模板,需要写在模板文件第一行
							语法:
									{% extends ‘父模板路径’ %}
							示例:
# 在base.html中
<h1>头部</h1>
{% block main %}
{% endblock main %}
<h1>尾部</h1>
# 在main.html中
{% extends 'myApp/base.html' %}

{% block main %}
    <h1>我是中间部分</h1>
{% endblock main %}
			HTML转义:
					问题:会把HTML代码直接当成字符串原样输出
					解决:
{{code|safe}}{% autoescape off %}
{{code}}
{% endautoescape %}
			CSRF:
					跨站请求伪造:
							某些恶意网站包含链接、表单、按钮、js,利用登录用户在浏览器认证,从而攻击服务
					防止CSRF:
							在settings.py中的MIDDLEWARE下加入< 'django.middleware.csrf.CsrfViewMiddleware', >
							{% csrf_token %}:这个要隐藏在HTML页面中,避免被破解,从而攻击服务器
			验证码:
					作用:
							在用户注册、登录页面的时候使用,为了防止暴力请求,减轻服务器的压力, 也是防止CSRF的一种方式
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值