我在Django项目中测试Jinja2并且有一个奇怪的输出。
当我渲染表单时,一些字符是HTML编码的(< >
等。)
在模板中:
{{ form.as_p() }}
它呈现给浏览器:
<p><label for="id_username">Utilisateur:</label> <input autocomplete="off" id="id_username" type="text" name="username" maxlength="100" /></p> <p><label for="id_password">Mot de passe:</label> <input autocomplete="off" type="password" name="password" id="id_password" /></p>
看来源:
&lt;p&gt;&lt;label for=&quot;id_username&quot;&gt;Utilisateur:&lt;/label&gt; &lt;input autocomplete=&quot;off&quot; id=&quot;id_username&quot; type=&quot;text&quot; name=&quot;username&quot; maxlength=&quot;100&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;label for=&quot;id_password&quot;&gt;Mot de passe:&lt;/label&gt; &lt;input autocomplete=&quot;off&quot; type=&quot;password&quot; name=&quot;password&quot; id=&quot;id_password&quot; /&gt;&lt;/p&gt;
有谁知道这个问题?
答案 0 :(得分:27)
Jinja2试图通过HTML-escaping the data安全。因此,您必须使用|safe
filter。
虽然我没有将Django与Jinja2一起使用,但我相信这应该有效:
{{ form.as_p()|safe }}