Django项目 /admin 站点匹配查询不存在

3

我正在Heroku上运行一个网站。我的问题出现在当我访问位于www.mysite.com/admin的我的网站管理员页面时。当我访问此页面时,我遇到了问题。

DoesNotExist at /admin/
Site matching query does not exist.

问题是,我的项目/admin本地和在暂存服务器上都可以运行。但当我访问它的线上版本时,就会出现错误。

在 Stack Overflow 上搜索了一下后,我尝试执行以下命令通过 python manage.py shell 运行:

from django.contrib.sites.models import Site
Site.objects.create(pk=1, domain='www.xxx.com', name='xxx.com')

我曾将 SITE_ID = 1 更改为 SITE_ID = www.mysite.com,结果导致我的演示服务器崩溃了,所以我又改回去并再次尝试而没有改变 SITE_ID。

可能出了什么问题?


你在本地使用哪个数据库?在Heroku上呢?你是否已经将Heroku项目与那里的数据库同步了? - rnevius
在本地使用sqlite3,在Heroku上使用postgresql。如果我理解你的问题正确,我认为Heroku已经同步了。 - ApathyBear
如果您运行heroku run python manage.py syncdb会发生什么? - rnevius
安装了0个对象从0个fixture中。 - ApathyBear
SITE_ID起始值为整数。我还会将您的实时项目URL添加到“站点”中,然后当您处于实时环境中时,将SITE_ID更改为实时URL。 - Erion S
3个回答

8
似乎你的设置文件中 SITE_ID 的设置指向数据库中不存在的 ID。你需要通过管理界面在 sites model 中创建一个新网站,并将设置文件中的 ID 更改为相应的ID,或者通过 SQL 重新插入该项,并赋予与设置文件中相同的 ID。

完美运行,使用 insert into "public"."django_site" ( "name", "domain") values ( 'site1', '0.0.0.0'); 创建一个站点,并在设置中编辑 SITE_ID 以正确的 ID。 - 4givN

0

这个问题似乎会一直持续发生,所以如果您不想为您的模型提供多个站点服务,那么我建议您从设置文件中删除SITE_ID。请注意,这对我有用!


-1

我刚刚需要从 settings.py 中的 INSTALLED_APPS 删除'django.contrib.sessions',因为它引起了问题,并且我仅在此项目中使用一个站点。

但是,如果您要将项目用于多个不同的站点并且需要Django sites框架,请检查数据库中的 SITE_ID 是否与设置中定义的匹配。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接