django 站点匹配查询不存在

r7xajy2e  于 2022-11-18  发布在  Go
关注(0)|答案(9)|浏览(192)

这是我的第一个项目,所以请原谅我的不熟悉。
网站运行得很好,直到我点击了“注销”。之后,网站会给予我这个错误:DoesNotExist at /login/ Site匹配查询不存在
我到处搜索,得到的唯一解决方案与设置站点框架、SITE_ID等有关。我认为我电脑上的这些项目都很好,但我找不到一个演练/指南来帮助我检查它们。
有谁能告诉我是什么问题,以及如何解决它?提前感谢:3

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
        'NAME': '/home/dotcloud/nhs.db',                      # Or path to database file if using sqlite3.
        'USER': '',                      # Not used with sqlite3.
        'PASSWORD': '',                  # Not used with sqlite3.
        'HOST': '',                      # Set to empty string for localhost. Not used with sqlite3.
        'PORT': '',                      # Set to empty string for default. Not used with sqlite3.
    }
}
y53ybaqx

y53ybaqx1#

如果你的数据库中没有定义站点,而django想引用它,你需要创建一个。
python manage.py shell

from django.contrib.sites.models import Site
new_site = Site.objects.create(domain='foo.com', name='foo.com')
print (new_site.id)

现在,将www.example.com中的站点ID设置settings.py为SITE_ID

jhkqcmku

jhkqcmku2#

数据表django_site必须包含与id具有相同值的数据列(预设相等1),因为SITE_ID设定为(在您的settings.py内)。

kr98yfug

kr98yfug3#

SITE_ID = 1添加到settings.py您的django项目中的www.example.com。

6l7fqoea

6l7fqoea4#

我 在 没有 使用 python manage.py shell 的 情况 下 修复 了 它
首先 我 尝试 使用 上面 的 命令 manage.py shell :

from django.contrib.sites.models import Site
new_site = Site.objects.create(domain='foo.com', name='foo.com')
print(new_site.id)

中 的 每 一 个
但 它 给出 了 完整 性 错误
简单 地 说 就是 把 SITE_ID = 1 加 到 你 的 settings.py 如果 你 想 知道 你 的 站点 id 是 什么 , 那么 进入 实际 的 数据 库 , 我 下载 了 sqliteman 来 看看 我 的 表 有 什么 。
这 是 因为 有 一 个 函数 get_current 在 查找 SITE_ID , 但 在 您 的 settings.py 中 找 不到 它

tables
-django_site
--Columns
---id

格式
它 ID 应为 1 , 名称 应为 example.com , 域 应为 example.com

dkqlctbz

dkqlctbz5#

我看到了创建一个新站点和引用id的答案。但是如果你已经有了一个站点或者你删除了这个站点,然后又从UI中创建了这个站点,那么id会不断增加。要解决这个问题,你可以按照下面的方法得到id:

python manage.py shell
from django.contrib.sites.models import Site
print(Site.objects.get(name='example.com').id)

把你在这里得到的id输入setting.py

SITE_ID = 8

基本上ID表中对应的游站点和www.example.com中settings.py应该匹配。

puruo6ea

puruo6ea6#

在数据库django_site表中查询ID,然后在Django www.example.com中设置正确的IDsettings.py,例如:SITE_ID = 3

bvhaajcl

bvhaajcl7#

您似乎忘记在www.example.com中添加SITE_ID=1settings.py

m1m5dgzv

m1m5dgzv8#

我在为项目创建站点Map时遇到了同样的错误。我在setting.py文件的Installed_APP列表中包含了这个'django.contrib.sites'。通过从installed_app列表中删除'django.contrib.sites',错误就被删除了。

mdfafbf1

mdfafbf19#

确保添加站点ID,下面是一个示例:
SITE_ID = 1

相关问题