什么是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的模板默認會對 模板變量 進行轉義,模板變量中的 “ < ” “ > ” 分別被轉義成 < > 本例中的html實際上是這樣的:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <h1>hello world</h1> </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>
瀏覽器顯示結果如下: