3

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

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

我没有触及任何代码或对数据库进行任何更改。在寻找答案时,我看到了这篇文章,确实,'django.contrib.sites'INSTALLED_APPS我的settings.py文件中删除确实“解决”了问题,但现在我想知道为什么。昨天我还在工作的时候显然有那条线INSTALLED_APPS,但我想知道为什么它今天突然停止工作,因为从那以后我没有接触任何代码。

4

1 回答 1

7

您需要一个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()

或者

$> ./manage.py shell
>>> from django.contrib.sites.models import Site
>>> site = Site.objects.create(domain='example.com', name='example.com')
>>> site.save()

这应该可以解决您的问题。

您还可以参考有关启用框架的文档:Sites

要启用站点框架,请执行以下步骤:

  • 将“django.contrib.sites”添加到您的 INSTALLED_APPS 设置中。

  • 定义 SITE_ID 设置:

    站点 ID = 1

  • 运行迁移。

django.contrib.sites 注册一个post_migrate信号处理程序,它创建一个以example.comdomain命名的默认站点example.com。这个站点也将在 Django 创建测试数据库之后创建。要为您的项目设置正确的名称和域,您可以使用初始数据夹具

于 2013-10-08T14:13:46.127 回答