昨天我设置了一个新的Django应用程序,当我停止工作时,管理员仍然可以。今天早上我运行服务器,我看到了这个错误页面:
DoesNotExist at /admin/
Site matching query does not exist.
我没有触及任何代码或对数据库进行任何更改。在寻找答案时,我看到了this post,实际上,从'django.contrib.sites'
文件中的INSTALLED_APPS
删除settings.py
确实解决了问题。问题,但现在我想知道为什么。昨天我在INSTALLED_APPS
工作时显然已经知道了这一行,但是我想知道为什么它从今天起我没有触及任何代码时突然停止工作。
答案 0 :(得分:4)
Site
表中需要sites
个对象。由于某种原因,未创建Site
对象。
试试这个
登录你的django shell
$> ./manage.py shell
>>> from django.contrib.sites.models import Site
>>> site = Site()
>>> site.domain = 'example.com'
>>> site.name = 'example.com'
>>> site.save()
OR
$> ./manage.py shell
>>> from django.contrib.sites.models import Site
>>> site = Site.objects.create(domain='example.com', name='example.com')
>>> site.save()
这应该可以解决您的问题。
您还可以参考this documentation关于启用Sites
框架:
要启用网站框架,请按以下步骤操作:
将'django.contrib.sites'添加到您的INSTALLED_APPS设置。
定义SITE_ID设置:
SITE_ID = 1
运行迁移。
django.contrib.sites注册一个
post_migrate
信号处理程序,该处理程序使用域example.com
创建名为example.com
的默认站点。在Django创建测试数据库之后,也将创建此站点。要为项目设置正确的名称和域,可以使用initial data fixture。