2011-09-14 40 views
9

Tôi đã thử nghiệm Jinja2 trong một dự án Django và có một đầu ra lạ. Khi tôi làm cho hình thức, một số ký tự HTML mã hóa (< > vv)Jinja 2 - Django Form: rendering mã hóa HTML

Trong mẫu:

{{ form.as_p() }} 

Nó ám vào trình duyệt:

<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> 

Nhìn vào nguồn:

&amp;lt;p&amp;gt;&amp;lt;label for=&amp;quot;id_username&amp;quot;&amp;gt;Utilisateur:&amp;lt;/label&amp;gt; &amp;lt;input autocomplete=&amp;quot;off&amp;quot; id=&amp;quot;id_username&amp;quot; type=&amp;quot;text&amp;quot; name=&amp;quot;username&amp;quot; maxlength=&amp;quot;100&amp;quot; /&amp;gt;&amp;lt;/p&amp;gt; 
&amp;lt;p&amp;gt;&amp;lt;label for=&amp;quot;id_password&amp;quot;&amp;gt;Mot de passe:&amp;lt;/label&amp;gt; &amp;lt;input autocomplete=&amp;quot;off&amp;quot; type=&amp;quot;password&amp;quot; name=&amp;quot;password&amp;quot; id=&amp;quot;id_password&amp;quot; /&amp;gt;&amp;lt;/p&amp;gt; 

Có ai biết vấn đề này không?

Trả lời

26

Jinja2 cố gắng an toàn trước HTML-escaping the data. Vì vậy, bạn phải sử dụng |safefilter.

Mặc dù tôi đã không sử dụng Django với Jinja2, tôi tin rằng điều này sẽ làm việc:

{{ form.as_p()|safe }} 
+0

vĩ đại này hoạt động tốt. Cảm ơn bạn! – Patrick

+5

@Patrick: Nếu bạn thấy bài đăng này hữu ích, vui lòng [chấp nhận] (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) nó. –

+1

Được thăng hạng. Giúp tôi quá! – Raj