如何在Django中通过自定义用户模型登录

时间:2020-05-18 07:17:54

标签: python-3.x authentication django-models django-forms django-login

我想基于自定义用户模型对用户进行身份验证。 我的实现如下-


models.py

from django.db import models
from django.contrib.auth.models import User


# Create your models here.
class user_details(models.Model):
    class Meta:
        db_table = '"user_details"'

    user = models.OneToOneField(User, on_delete=models.CASCADE)
    team = models.CharField(max_length=80)

forms.py

    from django import forms
    from django.contrib.auth.forms import UserCreationForm
    from django.contrib.auth.models import User


    class LoginForm(forms.Form):
        username = forms.CharField(
            widget=forms.TextInput(
                attrs={
                    "placeholder": "Username",
                    "class": "form-control"
                }
            ))
        password = forms.CharField(
            widget=forms.PasswordInput(
                attrs={
                    "placeholder": "Password",
                    "class": "form-control"
                }
            ))

views.py

from django.shortcuts import render, redirect
from django.contrib.auth import authenticate, login
from django.contrib.auth.models import User
from django.forms.utils import ErrorList
from django.http import HttpResponse
from .forms import LoginForm, SignUpForm
from .models import user_details

def login(request):
    form = LoginForm(request.POST or None)

    msg = None

    if request.method == "POST":
        if form.is_valid():
            username = form.cleaned_data.get("username")
            password = form.cleaned_data.get("password")
            user = authenticate(username=username, password=password)
            if user is not None:
                login(request, user)
                return redirect("/")
            else:
                msg = 'Invalid credentials'
        else:
            msg = 'Error validating the form'

    return render(request, "accounts/login.html", {"form": form, "msg": msg})

有人可以告诉我在哪里可以更正我的代码,以便可以通过 user_details 表对用户进行身份验证和登录?任何帮助将非常感激!

请让我知道是否需要更多详细信息以缩小范围。

0 个答案:

没有答案