【问题标题】:Where is the User model stored in django?用户模型存储在 django 中的什么位置?
【发布时间】:2020-06-27 21:04:09
【问题描述】:

Userdjango.contrib.auth.models 中的模型。

我目前正在开发一个使用内置 django 身份验证系统的用户注册和登录系统。

我使用 PostgreSQL 作为底层数据库而不是 sqlite。

迁移成功到在我的 postgres 数据库中生成了相应的表。

我假设表auth_user 存储了注册用户的所有详细信息。

为了测试我的数据库设置和身份验证系统,我正在向一个随机用户注册并检查auth_user 表。在表格中,我可以找到我注册的用户名详细信息。

接下来,我清除auth_user 表的内容以重新开始。

但是现在当我使用相同的用户名注册时,我在表单的用户名字段下收到消息A user with this username already exists.。这怎么可能?我清除了 Postgres 数据库中 auth_user 表的内容。

然后我创建一个单独的视图来显示属于django.contrib.auth.modelsUser模型的内容,发现我之前注册的用户名正在显示,即使auth_user表当前是空的。

我真的很好奇这个。我错过了什么吗?请说清楚。对于这篇大文章,我深表歉意。

【问题讨论】:

  • 您确定您正确配置了数据库后端吗?看起来您可能仍会以某种方式使用sqlite
  • 是的,后端配置正确。它已被配置为使用 psycopg2 的 postgresql。这让它更加混乱 XD。
  • 如果你删除了sqlite文件,然后重新启动服务器,它不会创建一个新的吗?
  • 不。它不会创建任何 sqlite 文件,因为数据库是 postgresql。
  • 如何清除auth_user的内容?

标签: django postgresql django-models django-forms


【解决方案1】:

在花费大量时间调试整个设置之后,我发现了问题所在。 settings.py 指的是不同的数据库。

我更新了存储数据库名称的环境变量。但是由于某种原因,我更新的值没有被引用,并且当前正在使用以前项目的数据库。不过,这证实了 User 模型已正确存储在数据库中。

我通过执行以下操作通过python manage.py shell 找出数据库名称来检查它:

In [1]: from django import db

In [2]: db.connections.databases

它显示了当前引用的数据库名称,而显示的数据库名称不是预期的。

环境变量 DB_NAME 没有被settings.py 更新为最新值,因为我忘记重新启动命令行。

对于造成的混乱,我深表歉意。这只是我的一个配置问题。

感谢Andrey NelubinWillem Van Onsem 花费您的时间在这方面。

【讨论】:

    猜你喜欢
    • 2013-05-12
    • 2020-05-19
    • 1970-01-01
    • 2015-12-05
    • 2020-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-21
    相关资源
    最近更新 更多