我创建了一个自定义窗口小部件和一个使用它的窗体。 以前,我只是有一个简单的模板来显示我调试时的表单:
<form>
{{ run_form.as_p }}
</form>
现在我想将每个表单字段括在div中,所以我已将模板更改为
{% for field in form %}
<div class="fieldWrapper">
{{ field.errors }}
{{ field.label_tag }}: {{ field }}
</div>
{% endfor %}
但现在看来,当我的字段被渲染时,它的所有字符都被html转义,所以现在当我查看它的源代码时,它看起来像<input type="text" id="id_scriptscrap"/>
它本来应该是
<input type="text" id="id_scriptscrap"/>
。
有什么我想念的吗?为什么第一个模板会在没有转义的情况下输出它,而第二个模板会逃脱?也许我在创建自定义窗口小部件类时做错了什么?
答案 0 :(得分:5)
创建自定义窗口小部件类时,也许我做错了什么?
可能,因为你不发布代码,所以不可能告诉你。
form.as_p
的工作原因是form._html_output()
方法 - 这是各种as_foo
方法使用的方法 - 在其输出上调用mark_safe
。但是,每个内置窗口小部件类也在自己的输出上调用mark_safe
,这就是它们单独工作的原因。您可能只需要在自定义小部件上执行相同操作。