我正在一个项目上,我没有使用默认的django用户模型,而是使用了自己的自定义用户模型。但是我遇到了一个问题。对于我的用户模型,我还制作了我自己的authb.py文件,该文件在下面提供,如果我使用的是默认的django身份验证,则它仅对我的超级用户而不是我通过注册表单输入的用户进行身份验证。完全卡住了。
首先这是我的authb.py 从.models导入用户
class AuthB:
def authenticate(self, username=None, password=None):
try:
user = User.objects.get(username=username)
return user
except:
return None
def get_user(self, user_id):
try:
return User.objects.get(pk=user_id)
except:
return None
但是现在我不使用此authb,而是使用默认身份验证。 这是我的用于用户模型的models.py
class User(models.Model):
is_authenticated = True
username = models.CharField(max_length= 25)
email = models.CharField(max_length= 150)
password = models.CharField(max_length= 100)
last_login = models.DateTimeField(auto_now= True)
profilepic = models.CharField(max_length= 255, default= "")
def __str__(self):
return self.username
这是我的views.py文件
def signup(request):
# context = {}
# return render(request, 'sign-up.html', context)
if request.method == 'POST':
# print(request.POST)
# Get form values
username = request.POST['username']
email = request.POST['email']
password = request.POST['password']
# Check if passwords match
# Check Username
if User.objects.filter(username=username).exists():
return redirect('signup')
else:
if User.objects.filter(email=email).exists():
return redirect('signup')
else:
u = User.objects.create_user(username=username, password=password, email=email)
u.save()
return redirect('login')
else:
return render(request, 'sign-up.html')
def login(request):
# context = {}
# return render(request, 'index.html', context)
if request.method =='POST':
# print(request.POST)
email = request.POST['email']
password = request.POST['password']
u= auth.authenticate(email=email, password=password)
return redirect('index')
else:
return render(request, 'login.html')
主要问题是简单用户无法登录我的网站,只有管理员才能登录和django,而我没有对我的简单用户进行身份验证。