Django 模板和 XML 问题
我有一个Django的视图,它用render_to_response(rss.xml, {"list":list})来渲染这个列表:
<a href="link.html">description</a>
<a href="link2.html">description2</a>
<a href="link3.html">description3</a>
rss.xml模板如下:
<?xml version="1.0" encoding="UTF-8"?><rss version="0.92">
{% for item in list%}
{{item}}
{% endfor %}
这个方法可以正常工作,但是里面的<和""会被替换成它们特殊的HTML字符值,比如:
<?xml version="1.0" encoding="UTF-8"?><rss version="0.92">
<a href="link.html">Description</a>
<a href="link2.html">Description2</a>
<a href="link3.html">Description3</a>
我该怎么做才能直接输出原始字符串,让文档变成:
<?xml version="1.0" encoding="UTF-8"?><rss version="0.92">
<a href="link.html">description</a>
<a href="link2.html">description2</a>
<a href="link3.html">description3</a>
2 个回答
5
你应该用自动转义标签把for循环包起来,像这样:
<?xml version="1.0" encoding="UTF-8"?><rss version="0.92">
{% autoescape off %}
{% for item in list%}
{{item}}
{% endfor %}
{% endautoescape %}
在自动转义标签之间,django不会对字符进行转义
可以查看这里: https://docs.djangoproject.com/en/dev/ref/templates/builtins/?from=olddocs#autoescape
3
在你的代码中,把 {{item}}
替换成 {{item|safe}}
。这样做可以避免把HTML字符转义。想了解更多,可以查看这个文档页面。