美文网首页
Django模板-HTML转义

Django模板-HTML转义

作者: IT的咸鱼 | 来源:发表于2018-08-16 15:07 被阅读0次

    HTML转义

    模板对上下文传递的字符串进行输出时,会将以下字符进行转义

    所谓html转义就是将  html关键字(包括标签,特殊字符等)  进行过滤替换。过滤替换格式如下:

    (1)打开  应用/views.py文件,创建视图html_escape。

    def html_escape(request):

        context={'content':'<h1>hello world</h1>'}

        return render(request,'booktest/html_escape.html',context)

    (2)打开  应用/urls.py文件,配置url。

    url(r'^html_escape/$', views.html_escape),

    (3)在templates/booktest/目录下创建html_escape.html,写入内容

    自动转义:{{content}}

    (4)运行服务器,在浏览器中输入如下网址。

    http://127.0.0.1:8000/html_escape/

    这是因为:django的模板默认会对模板变量  进行转义,模板变量中的  “ < ”  “ > ”  分别被转义成 &lt;    &gt; 本例中的html实际上是这样的:

    &lt;h1&gt;hello worl&lt;/h1&gt;

    关闭转义

    对于变量使用safe过滤器

    {{ data|safe }}

    对于代码块使用autoescape标签

    { % autoescape off %}

    {{ body }}

    { % endautoescape %}

    标签autoescape接受on或者off参数

    自动转义标签在base模板中关闭,在child模板中也是关闭的

    字符串字面值

    对于在模板中硬编码的html字符串,不会转义

    模板硬编码不转义:{ { d | default:"<b>123</b>" }}

    如下图

    如果希望出现转义的效果,则需要手动编码转义。

    { { d | default:"&gt;b&lt;123&lt;/b&gt;" }}

    如下图

    相关文章

      网友评论

          本文标题:Django模板-HTML转义

          本文链接:https://www.haomeiwen.com/subject/ecxgbftx.html