django输出html内容
2016-08-29 20:17
169 查看
最近在学习django,于是就用django做了一个简单的网站,用来练手,具体功能就是从网上抓取数据,然后放到我的网站上面,但是遇到一个问题就是django无法输出html格式的内容,只能以字符串的形式输出:
我们目的是输出的是:
在网上搜了好久,终于找到解决办法:
对于单个变量使用django的过滤器,告诉Django这个字符串不用进行HTML转义,方法如下:
对于一段模板内容可以使用autoescape标签,比如:
off 的意思是关闭对html的转义,而将off替换成on就表示进行html转义,默认进行html转义
注意:autoescape 具备继承性的,如果在父模版中定义了,则在子模版对应内容部分也存在此属性
我们可能会疑问,django为什么要将这些字符转义,而不是按原本html的内容输出呢?
我们举个例子:
需要用户输入用户名来注册,这个用户输入了用户名为:
假设他输入的长度合法,而且django也确实没显式提供什么特殊字符转换方法,那么每次在网页上面显示的时候,岂不是每次都弹出一个窗口,那么不是就很不安全啦。
为了解决这个问题,django默认将所有特殊的字符都转换成在html上面可以显示的内容,而不再包含转义功能!于是,也就出现了上面我想输出而输出而输出不了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的内容。
相关文章推荐
- django1.8输出一些非HTML内容
- django输出html内容的实例
- Python+Django+SAE系列教程15-----输出非HTML内容(图片/PDF)
- Django输出非HTML内容
- Python+Django+SAE系列教程15-----输出非HTML内容(图片/PDF)
- php用html表格输出数据库中的内容
- js在指定标签内输出html内容
- 使用struts2标签输出带html标签的文本内容
- Asp.net MVC 3 Razor 视图引擎 中使用@输出的内容都会被自动进行HTML编码 问题的解决办法
- Django 输出非html内容
- 实现C标签输出html样式的内容示例
- PHP 缓存内容为HTML并输出
- django html中显示后台传过来的列表或者字典内容
- asp.net 使用HttpModule对全站输出的动态页面的HTML内容进行修改,不会错乱
- echo输出的内容不解析html标签怎么办
- asp.net 使用页适配器和重写Render对全站输出的页面的HTML内容进行修改,不会错乱
- [django]在页面中正常显示包含html标记的内容
- Page_Load中指给客户端输出一个字符串 而不是所有的html内容也输出 出去 ;输出之后会发现在客户端接收的时候 responseText有值 但是responseXML没值
- 【django 学习笔记】12-输出非HTML内容
- 使用脚本方式和使用控件方式来输出Html内容的区别