对不起,英语不好!
我在我的项目中有一个登录函数,如下所示:
from django.contrib.auth.forms import AuthenticationForm
from django.contrib import auth
from django.http import HttpResponseRedirect
from django.shortcuts import render
def log_in(request):
form = AuthenticationForm(request.POST)
if request.method == "POST":
form = AuthenticationForm(data=request.POST)
username = request.POST.get('username')
password = request.POST.get('password')
user = auth.authenticate(request,username=username,password=password)
if user is not None and user.is_active:
auth.login(request,user)
return HttpResponseRedirect('/index')
context = {
'form': form,
}
return render(request, 'login.html', context)
此函数可以用于保存在数据库表auth_user中的任何帐户,但不能用于我定义的类User:
from django.contrib.auth.models import (
BaseUserManager, AbstractBaseUser )
class User(AbstractBaseUser):
username = models.CharField(unique=True,max_length=20,default="")
email = models.EmailField()
date_of_birth = models.DateField()
date_joined = models.DateTimeField(auto_now_add=True)
last_login = models.DateTimeField(auto_now=True)
is_admin = models.BooleanField(default=False)
is_active = models.BooleanField(default=True)
objects = AccountManager()
USERNAME_FIELD = 'username' #類似主鍵的功用
REQUIRED_FIELDS = ['email','username'] #必填
def __str__(self):
return self.email
def is_staff(self):
return self.is_admin
def has_perm(self, perm, obj=None):
return self.is_admin
def has_module_perms(self, app_label):
return self.is_admin
如果我使用注册页面创建一个新的帐户数据,它将保存在表:function_user(“函数”是我的应用程序名称),如果我登录表:auth_user帐户,它将跳转到/index,这是正确的,但当我登录新的注册帐户,它没有做任何事情,我真的很确定用户名和密码已经在表:function_user中创建。
register(看起来工作正常,数据将保存在function_user中):
def register(request):
if request.method == 'POST':
form = RegisterForm(request.POST)
if form.is_valid():
form.save()
return HttpResponseRedirect('/index')
else:
form = RegisterForm()
context = {'form': form}
return render(request, 'register.html', context)
数据库x1c 0d1x
我希望新创建的用户帐户(即function_user)除了auth_user之外还能够登录。
感谢阅读。
1条答案
按热度按时间j9per5c41#
您是否在www.example.com文件中添加了自定义用户模型settings.py
在www.example.com中添加以下行settings.py
使用自定义用户模型所在的应用程序名称替换用户