因此,我正在根据教程创建用户注册表格:
def RegisterView(request):
form = RegisterForm(request.POST or None)
if form.is_valid():
username = form.cleaned_data.get("username")
email = form.cleaned_data.get("email")
password = form.cleaned_data.get("password")
new_user = User.objects.create_user(username, email, password)
但是该教程没有说明django如何清除数据以及如何知道数据有效。
答案 0 :(得分:0)
您的表格可以使用一种干净的方法:
class YourForm(forms.Form):
name = forms.CharField(max_length=100)
# it can be as simple as this
def clean(self):
cleaned_data = super(YourForm, self).clean()
name = cleaned_data.get('name')
# or you can clean specific fields with custom validation logic
def clean_name(self):
cleaned_data = self.cleaned_data
name = self.cleaned_data['name']
if name == 'John':
msg = 'John is not an acceptable name.'
self._errors['name'] = self.error_class([msg])
del cleaned_data['name']
return name
return name
在您的情况下,Django可能仅使用默认逻辑进行验证。例如,如果在模型中将您的电子邮件字段指定为models.EmailField,则Django仅检查以确保输入的内容是有效的电子邮件地址。
答案 1 :(得分:0)
Form类中的每个字段不仅负责验证数据,还负责“清理”数据-将其标准化为一致的格式。
Django如何清除数据?
Django表单的 is_valid()
方法调用 full_clean()
方法,并生成 self.cleaned_data
属性和 self.errors
属性。因此,调用 is_valid()
方法后,您将拥有这两个属性
Django如何知道数据是否有效?
调用 is_valid()
方法后, self.errors
方法将具有格式错误详细信息或空dict。因此,如果该属性没有值,( Empty dict),则该表格有效。否则,该表格无效