簡體   English   中英

使用自定義用戶模型的 Django 用戶注冊不起作用

[英]Django user signup using custom user model not working

我有一個 Django 自定義用戶模型“es_user”,它繼承了 Django 的默認用戶模型。 當用戶注冊時,它工作正常,但該用戶將成為“用戶”的一部分,並且不會添加到 es_user。 因此,每次用戶注冊時,我都必須轉到管理面板並將已登錄的“用戶”添加到“es_user”。

所以為了解決這個問題,我將這 2 行添加到了views.py 的行中

 es_user_instance = es_user.objects.create(user= req_user)
 es_user_instance.save()

這給了我這個錯誤

ValueError at /signup/

Cannot assign "<SimpleLazyObject: <django.contrib.auth.models.AnonymousUser object at 0x7f9c787b9be0>>": "es_user.user" must be a "User" instance.

模型.py

class es_user(models.Model):
user = models.OneToOneField(User,related_name='es_user', on_delete=models.CASCADE)

視圖.py

def signup(request):
signup_form_instance = SignUpForm()

if request.method == "POST":

    signup_form_instance = SignUpForm(request.POST)
    if signup_form_instance.is_valid():
        signup_form_instance2 = signup_form_instance.save(commit = False)
        req_user = request.user
        signup_form_instance2.password = make_password(signup_form_instance.cleaned_data['password'])
        signup_form_instance2.save()
        es_user_instance = es_user.objects.create(user= req_user)
        es_user_instance.save()

        return index(request)#successful signup redirect or return
    else:
        print("SIGN UP FORM INVALID")

return render(request,'signup.html',{'signup_form':signup_form_instance})

表格.py

class SignUpForm(forms.ModelForm):
    class Meta:
        model = User
        fields = ('username', 'email', 'password')

有人能告訴我問題出在哪里嗎

注意:我使用了這個自定義用戶模型,因為稍后我將向“es_user”添加更多字段。

問題是req_user = request.user正在返回AnonymousUser因為您還沒有登錄用戶。 所以在使用request.user之前,先登錄用戶

或者,您可以只添加您剛剛創建的用戶而不登錄:

es_user_instance = es_user.objects.create(user=signup_form_instance2)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM