将HTML放在Django中的隐藏表单字段中

时间:2014-02-19 18:32:15

标签: html django django-templates

我遇到了模板问题:我正在尝试显示一个用于更改值的表单,其中用户在textarea中输入当前值,旧值保存在隐藏中用于审计目的的字段。这个值通常是一些HTML,当我渲染页面时,隐藏字段中的这个HTML似乎被部分呈现:我的隐藏字段的value属性被输入的HTML中的第一个引号关闭,并且其余的HTML喷出我的页面。我尝试使用escape装饰器,但没有改变任何东西。

1 个答案:

答案 0 :(得分:0)

首先,更好的解决方案可能是将审核值保存在使用editable=False定义的单独模型字段中。您仍然可以使用表单的clean方法对值进行检查:

def clean(self):
    cleaned_data = super(SomeForm, self).clean()
    if instance.the_audit_field == cleaned_data['the_editable_field']:
        ...raise a validation error?

您还可以在模型的save方法中修改审核字段的值。

其次,假设您必须按现在的方式进行,请让我解决模板中的非转义值。我假设您正在使用以下内容:

<textarea value="{{ form.the_audit_field.value }}"></textarea>

您应该使用以下内容:

<textarea>{{ form.the_audit_field.value }}</textarea>

注意,值在<{strong>内部} textarea,而不是value属性。

更好的方法是简单地允许Django为您渲染字段,如下所示:

{{ form.the_audit_field }}