gpt4 book ai didi

python - Django:子类化 UserCreationForm:没有 get_user() 方法?

转载 作者:太空宇宙 更新时间:2023-11-03 21:22:53 24 4
gpt4 key购买 nike

我通过子类化普通用户模型在 Django 中创建了一个自定义用户。该用户唯一的区别是它没有用户名。现在,我尝试使用内置的 Django UserCreationForms 来登录用户。我对 UserCreationForm 进行子类化并创建了 SignUpForm,它没有用户名字段。

我的控制流程如下:1)检查输入表单是否有效2)如果是,则让用户退出表单3)保存表单(从而保存用户)4)登录用户

但是,当我尝试让用户退出 SignUpForm 实例时,它会抛出此错误:/user/signup 处的 AttributeError“SignUpForm”对象没有属性“get_user”

我不明白这一点,因为 SignUpForm 是 UserCreationForm 的直接子类,它实现了 get_user() 方法。我的views.py代码如下:


from django.shortcuts import render, redirect
from django.contrib.auth.forms import UserCreationForm
from django.contrib.auth import authenticate, login
from django.contrib.auth.forms import UserCreationForm, AuthenticationForm
from django.contrib.auth import get_user_model
from django.db import models
User = get_user_model()


# Create your views here.

class SignUpForm(UserCreationForm):
email = models.EmailField(max_length=254, help_text='Required. Enter a valid email address.')
username = None

class Meta:
model = User
fields = ('email', 'password1', 'password2',)

def signup(request):
if request.method == 'POST': # if sending data to the server
form = SignUpForm(request.POST)# creates form from request data
if form.is_valid():
# print("form valid")
user = form.get_user() # ERROR IS HERE
form.save()
login(request, user)
return redirect('/manager')
else:
print("error")
else:
print("Get request asked for")
form = SignUpForm()
return render(request, 'user/signup.html', {'form': form}) # return rendered form

最佳答案

请原谅,我错误地阅读了文档。 UserCreationForm 没有 get_user() 方法,而是在调用 save 方法时返回用户。我同意这个实现吗?不,但我认为这有助于首先限制方法的数量。

关于python - Django:子类化 UserCreationForm:没有 get_user() 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54101793/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com