Django之模板参数
来源:互联网 发布:淘宝店怎么关 编辑:程序博客网 时间:2024/05/16 06:24
今天写了一个模板,在视图函数中,将含有html标记的内容传入模板,结果网页内容并没有将html的标记解析,而是原样输入。以为是自己写的有问题,于是换了一种写法,结果和原来一样。第一次代码如下:
视图函数:
def test(request): tem=Template('<html><body>{{content}}<body></html>') format='''<table border='1'> <tr> <td>name</td> </tr> </table>''' html=tem.render(Context({'content':format})) return HttpResponse(html)
</pre><p><span style="font-size:24px;">结果:</span></p><p><img src="http://img.blog.csdn.net/20140809161448259?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMTg0MTU3Nzk=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="" /></p><p></p><p><span style="font-size:24px">预期结果:</span></p><p><span style="font-size:24px"><img src="http://img.blog.csdn.net/20140809161353425?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMTg0MTU3Nzk=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="" /></span></p><p></p><p><span style="font-size:24px">所以一般不要在模板变量中写入html的内容,确实需要一些逻辑的表达,最好使用模板标记。出现上述现象的原因是因为,django处于安全考虑,对模板参数的内容进行了转义,若要在模板中加入html标签,则只需在模板变量后加上过滤器或一些特殊的模板标签即可(参见django book之高级模板用法),如下:</span></p><p></p><p></p><p><span style="font-size:24px">①:用safe过滤器为单独的变量关闭自动转意:</span></p><p><span style="font-size:24px"> 改正后的代码注意content的变化:</span></p><p><span style="font-size:24px"> </span><pre name="code" class="python">def test(request): tem=Template('<html><body>{{content|safe}<body></html>') format='''<table border='1'> <tr> <td>name</td></tr> </table>''' html=tem.render(Context({'content':format})) return HttpResponse(html)②使用模板标签来设置一整块模板的自动转意:
#关闭自动转意
{% autoescape off%}
.......
{% endautoescape %}
#打开自动转意
{% autoescape on%}
.......
{% endautoescape %}
PS:两个可以嵌套
如果大家还有更好的办法(自定义模板可能可以,不过暂时没有看到那里),请不吝赐教。
0 0
- Django之模板参数
- django模板之forloop
- django模板之forloop
- Django 模板之forloop
- Django之模板继承
- django模板之循环嵌套
- Django之视图与模板
- Django 之 (3)模板
- Django module学习之模板
- Django模板系列之六
- django 模板中使用配置参数
- django传递公共参数到模板
- django中传参数给模板
- DJANGO基础学习之模板过滤备忘
- Django模板之自定义tag和filter
- python学习之浅谈django模板
- Django学习总结之四-模板
- Django模板之显示基本字符串
- windows最基本的操作
- onCreateOptionsMenu和onPrepareOptionsMenu的区别
- Google I/O 2014之Android面面观
- 【C++基础 10】四种cast转换的区别
- Extjs 的apply, clone, merge笔记
- Django之模板参数
- Unity3d实现画线
- 多条命令
- Linux 编写线程,调用pthread_create,pthread_join出现undefined reference to..问题
- vim注释代码
- centos6安装codeblocks
- 一种排序
- 个人项目-网络电话呼叫客户端 (一)
- Shell 职责