django中的转义

xiaoxiao2021-02-28  106

什么是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>

   浏览器显示结果如下:

转载请注明原文地址: https://www.6miu.com/read-26683.html

最新回复(0)