Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Custome用户进行Django注册_Django_Django Models_Django Forms_Django Views_Django Users - Fatal编程技术网

使用Custome用户进行Django注册

使用Custome用户进行Django注册,django,django-models,django-forms,django-views,django-users,Django,Django Models,Django Forms,Django Views,Django Users,我使用djangoAbstractUser创建了一个自定义用户。我真的不知道如何反映为用户注册、登录和更新添加的字段。以下是我尝试过的: models.py forms.py 管理员 views.py(用于注册) 登录视图 def login (request): if request.method == 'POST': username = request.POST['username'] password = request.POST['password'] u

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

models.py

forms.py

管理员

views.py(用于注册)

登录视图

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', 'last_name', 'email','state','city', 'local_government', 'phone_number', 
        'picture']
   context_object_name= 'profile'

当我用上面的代码尝试视图时,它不起作用。我相信我弄错了,希望能得到任何帮助。

您有
CustomUserCreationForm
。因此,使用
form=CustomUserCreationForm(request.POST)
代替所有
request.POST['key']
东西。然后检查此表单是否有效以及是否为-save form:
如果form.is\u valid():form.save()
。与
CustomUserChangeForm
表单相同。谢谢@yevhenim。我没有完全得到你的答复;我是django的新手。下面是我对表单的看法。非常感谢@Yevhenim。
 class CustomUserAdmin(UserAdmin):
   add_form = CustomUserCreationForm
   form = CustomUserChangeForm
   model = CustomUser

   list_display = ['id', 'first_name', 'last_name', 'email','subscription_plan', 'state', 'city', 
    'local_government', 'phone_number', 'picture']
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', 'last_name', 'email','state','city', 'local_government', 'phone_number', 
        'picture']
   context_object_name= 'profile'