不知何故,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()方法,因此我假设表单数据没有被清除。
答案 0 :(得分:2)
cleaned_data
是经过验证的数据,但内容不会自动删除。您需要在表单上编写clean_username()
方法才能为您完成此操作。 Here是关于如何执行此操作的Django文档 - 您需要的内容如下:
def clean_username(self):
return self.cleaned_data['username'].strip()