67

Python noob,因为这是我的第一个项目,所以请原谅我的不熟悉。

该网站运行良好,直到我在我的应用程序上单击“注销”。之后,网站会给我这个错误:DoesNotExist at /login/ 网站匹配查询不存在。

我到处搜索,我得到的唯一解决方案与设置站点框架、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.
    }
}
4

7 回答 7

163

如果您的数据库中没有定义站点并且 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)

现在将您的 settings.py 中的站点 ID 设置为 SITE_ID

于 2012-08-05T05:45:18.260 回答
34

django_site必须包含具有相同值的行id(默认情况下等于1),SITE_ID设置为(在您的内部settings.py)。

于 2013-01-17T21:49:05.317 回答
7

添加SITE_ID = 1到 django 项目中的 settings.py 中。

于 2019-02-01T11:22:00.580 回答
5

manage.py我在不使用 python shell的情况下修复了它

起初我尝试使用manage.pyshell 使用上面的命令:

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 以查看我的表有什么。因此,您在表格中拥有的任何站点 ID 都是分配给的SITE_ID

这是因为有一个函数get_current正在寻找,SITE_ID但在你的settings.py

tables
-django_site
--Columns
---id

它应该有 id 为 1,名称为example.com,域为example.com

于 2017-12-06T11:31:44.843 回答
2

我看到了创建新站点和参考 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 和 settings.py 中的 ID 应该匹配。

于 2018-02-06T07:23:13.607 回答
1

看来您必须在 settings.py 中添加 SITE_ID=1

于 2020-11-08T05:20:28.710 回答
1

在此处输入图像描述

查询数据库 django_site 表中的 ID 并在 Django settings.py 中设置正确的 ID,例如:SITE_ID = 3

于 2019-04-01T08:55:12.330 回答