从Django形式剥离空间

时间:2015-06-19 10:14:26

标签: python django

我通过邮寄申请获得表格:

form = ReportDataForm2(req.POST)

我试图通过以下方式从所有字段中删除空格:

for element in form:
      form[element] = form[element].strip()   

但这似乎没有做任何事情。

我也尝试在我收到数据时剥离:

            id = form.cleaned_data['id'].strip()

也不工作。

我是Django的新手,所以不知道如何处理表格。

2 个答案:

答案 0 :(得分:5)

这个怎么样: 您是否扩展了CharField类,创建了自己的Field,并在您想要剥离字段的任何时候使用它?

class StrippedCharField(CharField):
     """Newforms CharField that strips trailing and leading spaces."""
     def clean(self, value):
         if value is not None:
             value = value.strip()
         return super(StrippedCharField, self).clean(value)

关于是否应该由Django处理表单数据剥离已经进行了长时间的讨论。 discussion was resurrected最近但实际线程started about 7 years ago

我自己没有测试过上面的代码。 The solution was pulled from this forum discussion

答案 1 :(得分:0)

验证表单字段的好地方是clean_<fieldname>()方法。 <fieldname>是您要验证的字段的名称。例如,如果要验证名为name的字段,则需要定义clean_name()方法来验证它。

一个详尽的例子:

class MyForm(forms.Form):
    text = forms.CharField(...)
    ...

    def clean_text(self):
        stripped_text = self.cleaned_data['text'].strip()
        # do some other validation if you want...
        return stripped_text

除了剥离,你可以在那里进行各种验证。

See docs for more on validation