使用客户用户注册Django

我使用Django AbstractUser创建了一个自定义用户。我真的不知道如何反映用户注册,登录和更新所添加的字段。下面是我尝试过的:

  

models.py

class CustomUser(AbstractUser):
   state = models.CharField(choices=States,default ='abia',max_length=50 )
   city = models.CharField(max_length=50)  
   local_government = models.CharField(max_length=50)  
   phone_number = models.CharField(max_length=50,blank= True)  
   picture = models.ImageField(upload_to='user/photos',blank=False,null=False,validators= 
    [clean_image])
  

forms.py

class CustomUserCreationForm(UserCreationForm):

   class Meta:
      model = CustomUser
      fields = UserCreationForm.Meta.fields + ('state','city','local_government','phone_number','picture',)

class CustomUserChangeForm(UserChangeForm):

   class Meta:
      model = CustomUser
      fields = UserCreationForm.Meta.fields + ('state',)
  

admin.py

 class CustomUserAdmin(UserAdmin):
   add_form = CustomUserCreationForm
   form = CustomUserChangeForm
   model = CustomUser

   list_display = ['id','first_name','last_name','email','subscription_plan','state','picture']
  

views.py(用于注册)

def register (request):
  if request.method == 'POST':
    firstname= request.POST['firstname']
    lastname= request.POST['lastname']
    state= request.POST['state']
    city= request.POST['city']
    email= request.POST['email']
    username= request.POST['username']
    password= request.POST['password']
    password2= request.POST['password2']

    if password == password2:
        if User.objects.filter(username=username).exists():
            messages.error (request,'That username is taken')
            return redirect('register')
        else:
            if User.objects.filter(email=email).exists():
                messages.error (request,'That email is being used')
                return redirect('register') 
            else:
                user= User.objects.create(username=username,first_name=firstname,last_name=lastname,email=email,password = make_password(password),state=state,city=city)
                user.save()
                messages.success (request,'You are now registered and can login')
                return redirect('login')
    else:
        messages.error (request,'passwords do not match')
        return redirect('register')
  else:
    return render (request,'accounts/signup.html')

查看登录

def login (request):
  if request.method == 'POST':
    username = request.POST['username']
    password = request.POST['password']

    user = auth.authenticate(usernam=username,password=password)

    if user is not None:
        auth.login(request,user)
        messages.success(request,'You are now logged in')
        return redirect ('dashboard')
    else:
        messages.error(request,'Invalid Credentials')
        return redirect ('login')

  else:
    return render (request,'accounts/signin.html')

查看更新

class UpdateUser(UpdateView):
   model= User
   template_name= 'profile/profile-edit.html'
   fields = ['first_name','picture']
   context_object_name= 'profile'

当我尝试使用以上代码查看时,它不起作用。我相信我做错了,将不胜感激。

akinschen 回答:使用客户用户注册Django

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/2884043.html

大家都在问