在Django中修复和清理表单输入

时间:2011-08-04 20:20:16

标签: python django validation

据推测,Django中的clean_方法旨在允许内联清理输入表单数据以及接受/拒绝提交。

鉴于模型

"FooBar"

是有效输入。是否有标准修复

之类的方法
"FOOBAR"
"foo-bar"
"FooBar "

在验证之前有点模糊和一般化吗?

2 个答案:

答案 0 :(得分:1)

好的,目前还不清楚你真正想要做些什么来改变,但这样的事情应该有效:

from re import sub
...
#in your form:
def clean_myfield(self):
    data = self.cleaned_data['myfield']
    #Strip special chars
    data = sub("[\s_\-]","",a)
    if b.lower() != "foobar":
        raise forms.ValidationError("You have not specified foobar, you wicked boy!")
    #Do whatever conversion to camelcase you want on data (this seemed very app specific to me)
    return data

调用clean_field检查的时间相当晚(例如在字段的清理方法之后),但只要您不尝试先执行验证检查,它就可以正常工作。

当然,如果你愿意的话,你也可以先进行camelcase转换,然后进行相等检查,这真的不重要。

答案 1 :(得分:1)

如果你需要从ALLCAPS转到CapCase,简短的回答是否定的。

你的系统如何知道Aaaaaaaaaa应该被资本化AaaaAaaaAa?