django输出html内容

原创 2016年08月29日 20:17:47

最近在学习django,于是就用django做了一个简单的网站,用来练手,具体功能就是从网上抓取数据,然后放到我的网站上面,但是遇到一个问题就是django无法输出html格式的内容,只能以字符串的形式输出:

data = '<h1>hello world</h1>'
<p>{{ data }}</p>

我们目的是输出的是:

hello world

但是结果输出的是:

<h1>hello world</h1>

在网上搜了好久,终于找到解决办法:

  • 对于单个变量使用django的过滤器,告诉Django这个字符串不用进行HTML转义,方法如下:
data | safe
  • 对于一段模板内容可以使用autoescape标签,比如:
{% autoescape off %}
    {{ data }}
{% endautoescape %}

off 的意思是关闭对html的转义,而将off替换成on就表示进行html转义,默认进行html转义

注意:autoescape 具备继承性的,如果在父模版中定义了,则在子模版对应内容部分也存在此属性

我们可能会疑问,django为什么要将这些字符转义,而不是按原本html的内容输出呢?
我们举个例子:
需要用户输入用户名来注册,这个用户输入了用户名为:

<script type="text/javascript">alert('hello');</script>

假设他输入的长度合法,而且django也确实没显式提供什么特殊字符转换方法,那么每次在网页上面显示的时候,岂不是每次都弹出一个窗口,那么不是就很不安全啦。
为了解决这个问题,django默认将所有特殊的字符都转换成在html上面可以显示的内容,而不再包含转义功能!于是,也就出现了上面我想输出而输出而输出不了html的内容。

版权声明: Free Open Share

Django读取Mysql数据并显示在前端

一、首先按添加网页的步骤添加网页,我的网页名为table.html, app名为web table.html放到相应目录下, froms文件提前写好 修改views.py from dja...
  • GitzLiu
  • GitzLiu
  • 2017年01月20日 09:17
  • 9053

python+django加载静态网页模板

接着前面 Django初体验 今天我们来看看Django是如何加载静态html的? 1.第一步,在manage.py同级下新建html目录,里面新建一个index.html ...
  • github_26672553
  • github_26672553
  • 2016年09月06日 21:36
  • 5184

django模板变量直接显示html代码的问题

模板变量的内容,如果含html的话,django的模板系统默认会对输出进行转义,比如把转义成了<p> ,然后再显示出来的时候就如实地显示为。要解决这个问题只要把默认的 转义去掉就好了。比...
  • longzhiwen888
  • longzhiwen888
  • 2015年06月19日 15:49
  • 1608

Django模板(编写html代码

1.模板   用于编写html代码,还可以嵌入模板代码更快更方便的完成页面开发,再通过在视图中渲染模板,将生成最终的html字符串返回给客户端浏览器 模版致力于表达外观,一个视图可以使用...
  • xun527
  • xun527
  • 2017年10月11日 21:41
  • 557

django加载本地html

django加载本地htmlfrom django.shortcuts import renderfrom django.http import HttpResponse from django.sh...
  • lixiaodaoaaa
  • lixiaodaoaaa
  • 2017年04月25日 21:39
  • 1552

django请求返回不同的类型图片json,xml,html,等等

django 返回数据的主要是用django.http.HttpResponse 中的HttpResponse 完成的   具体的我直接贴代码吧   from django.http import ...
  • mzbqhbc12
  • mzbqhbc12
  • 2017年02月05日 11:19
  • 973

Django模板中的HTML自动转义

http://gaojohn.blogchina.com/1277698.html 做Web开发的人都明白,我们应该避免在用户输入信息中出现HTML标签。比如考虑下面的Django模...
  • zahuopuboss
  • zahuopuboss
  • 2016年01月19日 23:34
  • 2142

Django项目实践2 - Django模板(view-html)

Django模板 {视图和模板对逻辑和显示进行了分隔} 上面是使用 django.http.HttpResponse() 来输出"Hello World!"。该方式将数据与视图混合在一起,不符合Dj...
  • pipisorry
  • pipisorry
  • 2015年04月15日 16:42
  • 4424

Django模板系统(非常详细)

转载:http://www.czug.org/python/django/04.html 翻译www.djangobook.com之第四章:Django模板系统 The Django...
  • zhangxinrun
  • zhangxinrun
  • 2012年10月21日 13:16
  • 148397

Django views.py 和 html 之间参数传递关系

Django中的View部分,就是如何用代码来与models中定义的字段进行交互。与传统MVC分层定义略有不同的是,在Django中,View的功能是对页面请求进行响应和逻辑控制,而页面内容的表示则由...
  • chenglin1102
  • chenglin1102
  • 2014年01月26日 17:32
  • 11020
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:django输出html内容
举报原因:
原因补充:

(最多只允许输入30个字)