如何检查我在 Django 中制作的模型中是不是存在用户?
Posted
技术标签:
【中文标题】如何检查我在 Django 中制作的模型中是不是存在用户?【英文标题】:How to check if a user exists in the model that I made in Django?如何检查我在 Django 中制作的模型中是否存在用户? 【发布时间】:2021-11-05 09:16:14 【问题描述】:我正在制作登录页面,并且数据已经保存在我制作的模型中,而不是 usercreateform 中...而不是在我的模型中搜索用户(UserAuthentication),而是在用户中搜索...
view.py
def loginpage(request):
if request.method == "POST":
username = request.POST.get('username')
password = request.POST.get('password')
user = authenticate(request, username=username, password=password)
if user is UserAuthentication: #UserAuthentication is my model where data is stored
login(request, user)
return redirect('index')
else:
messages.warning(request, "Username OR Password is incorrect!")
return redirect('login')
else:
return render(request, "html/login.html", context=)
login.html
<form action="#" method="POST">
%csrf_token %
<input
class="text"
type="text"
name="username"
placeholder="Username"
required=""
/>
<br />
<br />
<input
class="text"
type="password"
name="password"
placeholder="Password"
required=""
/>
<br />
<br />
%for message in messages%
<p id="messages">message</p>
<br />
% endfor %
<input type="submit" value="LOGIN" />
</form>
models.py
class UserAuthentication(models.Model):
username = models.CharField(max_length=100,unique=True,verbose_name="Username",error_messages='required':'Username already exists')
email = models.EmailField(unique=True, verbose_name=" Email")
password1 = models.CharField(max_length=50 ,verbose_name="Password")
password2 = models.CharField(max_length=50 ,verbose_name="Confirmaition Password")
def __str__(self):
return self.username
【问题讨论】:
你能分享你的模型吗? 【参考方案1】:在您的settings.py
文件中,您需要指定要在项目中使用的用户模型。
将此行添加到settings.py
:
AUTH_USER_MODEL = '<app_name>.UserAuthentication'
当然,将<app_name>
更改为定义UserAuthentication
模型的应用名称。
此外,在 Django 中自定义用户模型并不容易。我强烈建议你看看官方docs。你可能会觉得很困惑,然后你可以在谷歌上搜索custom user in Django
。有很多很棒的教程。
【讨论】:
我在 settings.pyAUTH_USER_MODEL= 'mylogin.UserAuthentication'
中确实提到了它,但它显示了一个错误,即 AttributeError: type object 'UserAuthentication' has no attribute 'REQUIRED_FIELDS'
您好,我在回答中提到了这个问题。你最近写的问题与这个问题无关。的确,这是一个新问题。例如,您需要继承AbstractBaseUser 而不是models.Model
。以上是关于如何检查我在 Django 中制作的模型中是不是存在用户?的主要内容,如果未能解决你的问题,请参考以下文章
Django:检查实例是不是存在于用户数据库中并保存到应用模型数据库
Django,我在 manage.py 检查或 sync.db 时收到“错误:模块:无法导入模型”
我在 Postgresql 中制作了一个公共汽车预订系统,并被困在如何在预订时检查座位是不是可用