django 模板继承  HTML转义 CSRF

模板继承

模板继承和类的继承含义是一样的,主要是为了提高代码重用,减轻开发人员的工作量。 典型应用:网站的头部、尾部信息。

父模板

如果发现在多个模板中某些内容相同,那就应该把这段内容定义到父模板中
{%block 名称%}
预留区域,可以编写默认内容,也可以没有默认内容
{%endblock 名称%}

子模板

标签extends:继承,写在子模板文件的第一行。
{% extends "父模板路径"%}

子模版不用填充父模版中的所有预留区域,如果子模版没有填充,则使用父模版定义的默认值。
填充父模板中指定名称的预留区域。
{%block 名称%}
实际填充内容
{{block.super}}用于获取父模板中block的内容
{%endblock 名称%}

HTML转义

模板对上下文传递的字符串进行输出时,会对以下字符自动转义。
小于号< 转换为 <
大于号> 转换为 >
单引号' 转换为 '
双引号" 转换为 "
与符号& 转换为 &

关闭转义

过滤器escape可以实现对变量的html转义,默认模板就会转义,一般省略。
{{t1|escape}}
过滤器safe:禁用转义,告诉模板这个变量是安全的,可以解释执行。
{{data|safe}}

字符串字面值

对于在模板中硬编码的html字符串,不会转义。

CSRF

全称Cross Site Request Forgery,跨站请求伪造
某些恶意网站上包含链接、表单按钮或者JavaScript,它们会利用登录过的用户在浏览器中的认证信息试图在你的网站上完成某些操作,这就是跨站攻击

防csrf的使用

在django的模板中,提供了防止跨站攻击的方法,使用步骤如下:
step1:在settings.py中启用'django.middleware.csrf.CsrfViewMiddleware'中间件,此项在创建项目时,默认被启用
step2:在csrf1.html中添加标签
<form>
{% csrf_token %}
...
</form>

取消csrf保护

如果某些视图不需要保护,可以使用装饰器csrf_exempt,模板中也不需要写标签,修改csrf2的视图如下

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 声明:转载请注明出处//www.greatytc.com/p/1664dcfd840c 最近在折腾Djan...
    蛇发女妖阅读 6,310评论 1 10
  • 模板 模板就是一个简单的文本文件,它可以生成任何文本格式(HTML,XML,CSV等)。 模板中包含变量和标签,当...
    Zoulf阅读 587评论 0 0
  • 前言 根据前篇Django模型model分享,接着本篇文章分享下Django模板template,本篇内容包括:模...
    博行天下阅读 682评论 0 0
  • 一、模板概述 模板组成HTML代码动态插入的代码(挖坑、填坑逻辑控制代码) 作用快速生成HTML页面 优点模板的设...
    EndEvent阅读 1,613评论 0 3
  • 一、Django框架前言知识: 1、C/S和B/S的区别: C/S结构软件:客户端/服务端软件,即客户端要自己下载...
    月下独酌123阅读 4,641评论 0 36