我使用自定义UserCreationForm创建新用户,然后使用auth.views中的password_reset和自定义电子邮件模板向用户发送注册邮件。此过程工作正常,用户能够成功完成注册过程并开始使用该应用程序。我现在想创建用户而不必为用户设置密码。我试图在UserCreationForm初始化方法中设置self.fields ['password1']。required和self.fields ['password2']。Falke 建议使用here,但这并不适用于我。不幸的是,这很难调试。我没有看到任何错误消息,但我知道RegistrationView注册方法没有被调用。Django无密码创建新用户
这里是我的UserCreationForm
class UserCreateForm(UserCreationForm):
email = forms.EmailField(required=True)
class Meta:
model = User
fields = ("email",)
def __int__(self):
self.fields['password1'].required = False
self.fields['password2'].required = False
def save(self, commit=True):
user = super(UserCreateForm, self).save(commit=False)
clean_email = self.cleaned_data["email"]
user.email = clean_email
if commit:
user.save()
custom_user = CustomUser()
custom_user.id = user
custom_user.save()
return user
这里是我的RegistrationView
class UserRegistration(RegistrationView):
def __init__(self):
self.form_class = UserCreateForm
self.success_url = 'login'
self.template_name = 'register.html'
def register(self, request, form):
new_user = form.save()
我使用Django 1.8。请让我知道,如果有任何其他信息将有助于分享。
这个'RegistrationView'类来自哪里?如果它是'FormView',那么重载'form_invalid',添加'import pdb; pdb.set_trace()',并调试'form.errors'。我猜这是一个验证的事情。 – grantmcconnaughey
此外,您的表单类重写'__int__',而不是'__init__'。这可能是你的问题。 – grantmcconnaughey