我想基于自定义用户模型对用户进行身份验证。 我的实现如下-
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 表对用户进行身份验证和登录?任何帮助将非常感激!
请让我知道是否需要更多详细信息以缩小范围。