我在我的项目中设立了django但是,当我使用常规的acoounts创建用户时,它会保存用户两次:(一个带有用户名)和(另一个没有用户名(这是空用户名)。因此,下次我尝试创建一个用户时,它会引发一个异常,因为用户名必须是唯一的,并且它是重复的,即空用户名。
它为每个信号设置接收器,并在处理每个信号时打印日志。然而,我只能将populate_username信号和email_confirmation_sent信号之间的问题隔离开来。
发布于 2014-03-22 12:01:31
在深入到源代码中,到处洒上日志后,我发现问题是由我使用的自定义Signup 造成的(我本来可以解决这个问题,但这并不容易)。
django-allauth手动保存用户,因此在我的示例中,表单模型默认保存方法再次这样做并导致错误。
正如文档中所指出的
这个类( ACCOUNT_SIGNUP_FORM_CLASS)应该实现一个def注册(self、request、user)方法,其中用户代表新注册的用户。
然而,这种评价是相当模糊的,而且(至少在我的情况下)很容易认为ACCOUNT_SIGNUP_FORM_CLASS可以是一种形式(不管是哪种形式)。
所以,我找到了两个解决方案:
我实现了第二个,最后的表单如下:
class SignupForm(UserCreationForm):
class Meta:
model = get_user_model()
fields = ('first_name', 'last_name', 'email')
def save(self, commit=True):
return Nonehttps://stackoverflow.com/questions/22571736
复制相似问题