AppEngine上的Django表单验证框架:如何删除HTML等?

时间:2009-09-14 16:43:44

标签: python django google-app-engine

我在AppEngine(http://code.google.com/appengine/articles/djangoforms.html)上使用Django表单验证框架,如下所示:

data = MyForm(data=self.request.POST)
  if data.is_valid():
    entity = data.save(commit=False)
    entity.put()

我想知道在存储之前是否有办法预处理POST数据(删除恶意代码,HTML等)。看来任何表单验证库都应该提供类似的东西,不是吗?

由于

汉纳斯

3 个答案:

答案 0 :(得分:2)

简短回答:

forms.is_valid()通过调用名为clean()的方法自动填充字典forms.cleaned_data。如果要进行任何自定义验证,请定义自己的'clean_filed_name',它返回已清理的字段值或引发forms.ValidationError()。出错时,字段上的相应错误将自动填充。

答案很长:

Refer Documentation

答案 1 :(得分:1)

除了上面的答案,还有一个不同的观点:不要。使用尽可能少的处理存储用户输入,并在输出时清理数据。 Django模板为此提供了过滤器 - “escape”是一个可以转义所有HTML标签的过滤器。

这种方法优于在输入时清理数据的优点有两个:您可以随时更改数据清理方式,而无需“祖父”所有旧数据,当用户想要编辑某些内容时,您可以向他们显示他们输入的原始数据,而不是“清理”版本。在错误的时间清理数据也是双重逃避等问题的主要原因。

答案 2 :(得分:0)

是的,当然。您是否尝试过阅读表单文档?

http://docs.djangoproject.com/en/dev/ref/forms/validation/