django中的轉義


什么是html轉義?

  所謂html轉義就是將  html關鍵字(包括標簽,特殊字符等)  進行過濾替換。過濾替換格式如下:

接下來我們通過實例演示django中轉義的細節以及如何關閉轉義 

 

一  django的模板默認會對  模板變量  進行轉義,比如: 

  我們的urls.py文件中有這么一行: 

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

  名為test的view函數:

def test(request):
    return render(request,'test.html',{
        'content':'<h1>hello world</h1>'
    })

  test.html文件的內容:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
{{ content }}    
</body>
</html>

  運行manager.py  在瀏覽器中輸入http://127.0.0.1:8000/test/    結果:


  這是因為:django的模板默認會對  模板變量  進行轉義,模板變量中的  “ < ”  “ > ”  分別被轉義成 &lt;  &gt;  本例中的html實際上是這樣的:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
&lt;h1&gt;hello world&lt;/h1&gt;
</body>
</html>

 

二  如何關閉自動轉義 

  1  在模板中使用{% autoescape off %}標簽

   修改test.html文件如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
{% autoescape off %}
{{ content }}
{% endautoescape %}
</form>
</body>
</html>

   瀏覽器顯示結果:

 

  2  使用safe過濾器:

   修改test.html文件:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
{{ content|safe }}
</form>
</body>
</html>

   瀏覽器顯示結果如下:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM