如何验证在Django中创建的注册表单中输入的数据?
我使用Django中的类models.User()创建了一个注册表,如下所示:如何验证在Django中创建的注册表单中输入的数据?,django,django-models,django-views,django-forms,django-authentication,Django,Django Models,Django Views,Django Forms,Django Authentication,我使用Django中的类models.User()创建了一个注册表,如下所示: from Django.shortcuts import render, redirect from django.contrib.auth.models import User def register(request): if request.method == 'POST': username = request.POST['username'] email = req
from Django.shortcuts import render, redirect
from django.contrib.auth.models import User
def register(request):
if request.method == 'POST':
username = request.POST['username']
email = request.POST['email']
password = request.POST['password']
confirm_password = request.POST['confirm_password']
if password == confirm_password:
# some code
user = User.objects.create_user(username=username, email=email, password=password)
user.save()
return redirect('login')
else:
return redirect('register')
return render(request, 'register.html')
我的问题:
user.save()
保存数据之前,我还想删除输入数据末尾和开头的空格(如果有)(例如,如果有人以“abc efg”的形式输入名称,我想将其另存为“abc efg”)。基本上,我想使用Django表单的.is\u valid()
特性。我甚至试着这样做:
from django.shortcuts import render, redirect
from django.contrib.auth.models import User
def register(request):
if request.method == 'POST':
form = User(request.POST or None)
if form.is_valid():
username = request.POST['username']
email = request.POST['email']
password = request.POST['password']
confirm_password = request.POST['confirm_password']
if password == confirm_password:
# some code
user = User.objects.create_user(username=username, email=email, password=password)
user.save()
return redirect('login')
else:
return redirect('register')
else:
return redirect('register')
return render(request, 'register.html')
“User”对象没有属性“is\u valid”
关于如何在使用内置模型时使字段可选/必需并设置字段的最大长度和删除尾随空格(如果有的话)有什么想法吗?根据django文档,最好通过继承AbstractBaseUser来创建您自己的用户模型: 在这里,您可以定义哪些是可选的,哪些不是
哦,当你在看的时候——也许它也值得一看。现在可能不太相关,但今后肯定会如此!还可以查看自定义表单。根据django文档,最好通过继承AbstractBaseUser来创建自己的用户模型: 在这里,您可以定义哪些是可选的,哪些不是
哦,当你在看的时候——也许它也值得一看。现在可能不太相关,但今后肯定会如此!还可以查看自定义表单。您需要先声明表单。如果您使用的是默认的django用户,则可以使用以下用户验证数据:
from django.contrib.auth.forms import UserCreationForm
def register(request):
if request.method == 'POST':
form = UserCreationForm(request.POST or None)
if form.is_valid():
form.save()
# rest of the code
现在,假设您想要清理从HTML表单中获得的数据,那么您可以使用clean\uu
方法。要在UserCreationForm
中执行此操作,您可以覆盖它(还可以添加一些代码以显示如何自定义表单):
有关的详细信息,请参阅文档。您需要先声明表单。如果您使用的是默认的django用户,则可以使用以下用户验证数据:
from django.contrib.auth.forms import UserCreationForm
def register(request):
if request.method == 'POST':
form = UserCreationForm(request.POST or None)
if form.is_valid():
form.save()
# rest of the code
现在,假设您想要清理从HTML表单中获得的数据,那么您可以使用clean\uu
方法。要在UserCreationForm
中执行此操作,您可以覆盖它(还可以添加一些代码以显示如何自定义表单):
有关的详细信息,请参阅文档。好的,因此,我从您的解决方案中了解到,我在上面的代码中使用的django
用户
是一个模型
,为了在保存到模型中之前验证数据,我需要单独创建一个Modelform
,而不是创建我自己的表单,我可以使用UserCreationForm
(它甚至可以被覆盖以添加一些字段或条件),我说得对吗?UserCreationForm中还有一个疑问,即有3个预定义字段username、password1和password2…因此,当我执行form.save()时,password1
(==password2)从UserCreationForm
自动保存在User
模型的password
中?我很困惑,因为UserCreationForm和User model中的password有不同的名称是的,你说得对。密码字段应该很好,因为你使用的是Django的用户模型哦,很好,非常感谢你的帮助!好的嗯,所以我从您的解决方案中了解到,我在上面的代码中使用的django用户
是一个模型
,为了在保存到模型中之前验证数据,我需要单独创建一个Modelform
,而不是创建我自己的表单,我可以使用UserCreationForm
(它甚至可以被覆盖以添加一些字段或条件),我说得对吗?UserCreationForm中还有一个疑问,即有3个预定义字段username、password1和password2…因此,当我执行form.save()时,password1
(==password2)从UserCreationForm
自动保存在User
模型的password
中?我很困惑,因为UserCreationForm和User model中的password有不同的名称是的,你说得对。密码字段应该很好,因为你使用的是Django的用户模型哦,很好,非常感谢你的帮助!