django输出html内容的实例

yipeiwu_com6年前Python基础

最近在学习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的内容。

以上这篇django输出html内容的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持【听图阁-专注于Python设计】。

相关文章

Python使用pickle模块报错EOFError Ran out of input的解决方法

本文实例讲述了Python使用pickle模块报错EOFError Ran out of input的解决方法。分享给大家供大家参考,具体如下: 遇到了 EOFError:Ran out...

Python编程之列表操作实例详解【创建、使用、更新、删除】

Python编程之列表操作实例详解【创建、使用、更新、删除】

本文实例讲述了Python列表操作。分享给大家供大家参考,具体如下: #coding=utf8 ''''' 列表类型也是序列式的数据类型, 可以通过下标或者切片操作来访问某一个或者某...

Python并行分布式框架Celery详解

Python并行分布式框架Celery详解

Celery 简介 除了redis,还可以使用另外一个神器---Celery。Celery是一个异步任务的调度工具。 Celery 是 Distributed Task Queue,分...

在Pycharm中设置默认自动换行的方法

如下所示: 只对当前文件有效的操作: 菜单栏->View -> Active Editor -> Use Soft Wraps; 如果想对所有文件都有效,就要在sett...

python的继承知识点总结

python的继承知识点总结

python继承,python丰富的类因为继承而变得多姿多彩,如果语言不支持继承,那么类就没什么优势。 1、首先我们来定义两个类 一个dog类,一个bird类class Dog: &nb...