Django没有清理数据

时间:2014-07-18 19:41:12

标签: django django-forms

不知何故,Django没有清理以下表格中的数据:

class userRegistration(forms.Form):
    username = forms.CharField(widget=forms.TextInput)
    password1 = forms.CharField(widget=forms.PasswordInput)
    password2 = forms.CharField(widget=forms.PasswordInput)
    tos = forms.BooleanField(widget=forms.CheckboxInput)

查看:

def register(request):
    if request.method == 'POST':
        hash_object = hashlib.sha512(b'Hello World')
        hex_dig = hash_object.hexdigest()

        form = userRegistration(request.POST)

        if form.is_valid():
            user = User()
            user.username = form.cleaned_data['username']
            user.password = form.cleaned_data['password1']

            user.save()
            return HttpResponseRedirect('/')
   else:
        form = userRegistration()

   return render(request, 'register.html', {'form': form})

但是,如果我输入" some_username" (在第一个字符之前有空格)进入输入框,确切的数据被保存到数据库中,即没有调用.strip()方法,因此我假设表单数据没有被清除。

1 个答案:

答案 0 :(得分:2)

cleaned_data是经过验证的数据,但内容不会自动删除。您需要在表单上编写clean_username()方法才能为您完成此操作。 Here是关于如何执行此操作的Django文档 - 您需要的内容如下:

def clean_username(self):
    return self.cleaned_data['username'].strip()