如何检查我在 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'

当然,将&lt;app_name&gt; 更改为定义UserAuthentication 模型的应用名称。

此外,在 Django 中自定义用户模型并不容易。我强烈建议你看看官方docs。你可能会觉得很困惑,然后你可以在谷歌上搜索custom user in Django。有很多很棒的教程。

【讨论】:

我在 settings.py AUTH_USER_MODEL= 'mylogin.UserAuthentication' 中确实提到了它,但它显示了一个错误,即 AttributeError: type object 'UserAuthentication' has no attribute 'REQUIRED_FIELDS' 您好,我在回答中提到了这个问题。你最近写的问题与这个问题无关。的确,这是一个新问题。例如,您需要继承AbstractBaseUser 而不是models.Model

以上是关于如何检查我在 Django 中制作的模型中是不是存在用户?的主要内容,如果未能解决你的问题,请参考以下文章

django:如何从包含外键的多个模型中制作一个表单

Django:检查实例是不是存在于用户数据库中并保存到应用模型数据库

Django,我在 manage.py 检查或 sync.db 时收到“错误:模块:无法导入模型”

我在 Postgresql 中制作了一个公共汽车预订系统,并被困在如何在预订时检查座位是不是可用

Django,如何使用过滤器检查字符串字段是不是是参数的子字符串?

Django:检查模型字段是不是已回答