django学习日志(模板的渲染过程)第八部分:字符串数据转义

  • 语法
  • 新建一个路由
  • 自动抑制
  • 修改文件WhatsTemplate\App\urls.py
urlpatterns = [
...url(r'^escape/', views.escape),
]
  • 修改WhatsTemplate\WhatsTemplate\views.py

def escape(request):return render(request,'escape.html')
  • 新建escape.html
  • WhatsTemplate\templates\escape.html
  • 给html传入数据
  • WhatsTemplate\WhatsTemplate\views.py
def escape(request):content = '''<h1>宇宙巨匠哈某到此一游,汪汪!</h1><h1>宇宙巨匠阿某到此一游,汪汪汪汪汪汪汪汪汪汪汪汪汪汪汪汪汪汪!</h1><h1>宇宙巨匠萨某到此一游,汪汪!</h1><script></script>'''data  = {'content':content,}return render(request,'escape.html',context=data)
  • 修改WhatsTemplate\templates\escape.html
  • 没有进行转义
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title></head>
<body><h3>抑制</h3>
{{ content }}
<hr>
<h3>转义</h3>
{{ content }}</body><script type="text/javascript">var h1s = document.getElementsByTagName('h3')for(var i=0;i<h1s.length;i++){h1s[i].style.color = 'red'}
</script>
</html>
  • 打开网址 http://127.0.0.1:8000/app/escape/
  • 修改WhatsTemplate\WhatsTemplate\views.py
  • 改为js代码
def escape(request):
...<script type="text/javascript">var h1s = document.getElementsByTagName('h1')for(var i=0;i<h1s.length;i++){h1s[i].style.color = 'red'}
</script>
...return render(request,'escape.html',context=data)
  • 修改WhatsTemplate\templates\escape.html
  • 对文本进行转义
<h3>safe转义</h3>
{{ content | safe}}

  • 修改WhatsTemplate\templates\escape.html
    - autoescape on
<h3>autoescape转义</h3><!--抑制转义-->
{% autoescape on %}
{{ content }}
{% endautoescape %}
<hr>

  • autoescape off
<h3>autoescape转义</h3><!--允许转义-->
{% autoescape off %}
{{ content }}
{% endautoescape %}
<hr>

  • 注:外部传入的文本初始时被抑制转义的,防止注入攻击

django学习日志(模板的渲染过程)第八部分:字符串数据转义相关推荐

  1. Django学习日志三:模型层

    Django学习日志三:模型层1 日志一我们学习了Django的配置,详见: Django学习日志一Django的配置 日志二我们学习了创建第一个django项目,详见: Django学习日志二--创 ...

  2. django 学习 (二) 模板

    1. 在应用的目录下创建templates目录,并创建一个html文件,比如my.html 2. 修改应用的views.py文件,将my.html文件反馈给请求,有以下几种写法 1) from dja ...

  3. django 学习 (四) 模板标签

    模板标签实现html文件中的控制语句,模板标签语句用{%  %}形式编写 假如在views.py文件中定义以下内容并传递给模板 my_dic = {'name':'zhang', 'age':'32' ...

  4. django 学习 (三) 模板变量

    将views.py中的变量传递给html模板来显示,变量是以字典的形式传递给html模板文件显示的. 模板文件里以字典的{{健名}}来得到健值. 可传递的变量有以下几种形式 1. 基本变量 retur ...

  5. Django项目日志概述

    Django项目日志概述 本文环境python3.5.2,Django版本1.10.2 Django项目中日志的实现 Django项目中使用的日志,使用了Python标准库中的logging模块进行实 ...

  6. Django学习~1

    一.什么是web框架? 框架,即framework,特指为解决一个开放性问题而设计的具有一定约束性的支撑结构,使用框架可以帮你快速开发特定的系统,简单地说,就是你用别人搭建好的舞台来做表演. 对于所有 ...

  7. Django学习系列之五:Django 的模板的render替换render_to_string用法及templates模板查找路径顺序

    Django学习系列之五:Django 的模板的render替换render_to_string用法及templates模板查找路径顺序 1.Django 的模板的render替换render_to_ ...

  8. Django框架学习 —9模板详解 -- DTL

    作为Web框架,Django提供了模板,用于编写html代码,还可以嵌入模板代码更快更方便的完成页面开发,再通过在视图中渲染模板,将生成最终的html字符串返回给客户端浏览器 模板致力于表达外观,而不 ...

  9. 千锋Django学习笔记

    千锋Django学习笔记 文章目录 千锋Django学习笔记 写在前面 1. MVC和MTV 2. Django简介 3. MTV简单流程 4. 和Model的简单对接 5. Model 6. Tem ...

  10. Django学习笔记(下)

    文章目录 18 Template概念 19 模版语法 19.1 变量 19.2 点语法 19.3 标签 20 常见的请求状态码 21 view视图函数 21.1 概念及基础语法 21.2 内置函数 2 ...

最新文章

  1. SQLite可视化管理工具汇总
  2. ORACLE 等待事件的分类
  3. Python识别表格图_使用Python究竟可以做什么?下面是Python的3个主要应用
  4. 重构——解决过长参数列表(long parameter list)
  5. 三星“打法”:先模仿对手 再吃掉对手
  6. AliOS Things蓝牙协议栈及应用开发框架介绍
  7. linux下开启dhcp服务器配置,CentOS下DHCP服务器的配置
  8. rtt面向对象oopc——2.对象容器理解和rtt类的联系
  9. 什么是 Thrift(RPC)?一种接口描述语言和二进制通讯协议,用来定义和创建跨语言的服务
  10. 服务器虚拟化平台 可信云认证,100%满足规范,华为云Stack首批通过可信云虚拟化云平台最高等级认证...
  11. java并发包下的lock接口与syschronized关键字的区别
  12. Oracle | 初级-第一章 Oracle概述
  13. 深入浅出了解几种简单设计模式
  14. shazam 音频指纹 听歌识曲 原理(附代码)
  15. 细说php作者高洛峰免费收徒
  16. NATAPP安装和配置(附加NATAPP后台运行)
  17. 罗永浩和王自如的对质怎么看?
  18. 一款免费的WEB视频播放器Flowplayer
  19. 区域一体化电子病历系统管理源码 医院SOA架构 医院源码
  20. python爬易看网所有小说

热门文章

  1. Matlab实现图像识别(八)
  2. oracle负数金额大写,Oracle 小写金额转换为大写
  3. 视频教程-iOS企业级Swift项目实战之我的云音乐(第一部分)-iOS
  4. x轴z轴代表的方向图片_x轴y轴z轴代表的方向_x轴y轴z轴代表的方向图
  5. studio3t破解
  6. 椭球面上的几种曲率半径
  7. 钉钉群机器人关键词自动回复_自动化运维平台Spug测试
  8. 小程序父子组件间传值(微信/支付宝/钉钉)
  9. Excel合并多个文件
  10. Shapley Explanation Networks