为什么从INSTALLED_APPS删除'django.contrib.sites'会修复我突然得到的'DoesNotExist at / admin /'错误?

时间:2013-10-08 14:09:47

标签: django django-admin

昨天我设置了一个新的Django应用程序,当我停止工作时,管理员仍然可以。今天早上我运行服务器,我看到了这个错误页面:

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

我没有触及任何代码或对数据库进行任何更改。在寻找答案时,我看到了this post,实际上,从'django.contrib.sites'文件中的INSTALLED_APPS删除settings.py确实解决了问题。问题,但现在我想知道为什么。昨天我在INSTALLED_APPS工作时显然已经知道了这一行,但是我想知道为什么它从今天起我没有触及任何代码时突然停止工作。

1 个答案:

答案 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