Django admin DoesNotExist at / admin /

时间:2012-03-16 12:10:05

标签: django

我在Django管理员方面遇到了一些问题。

在syncdb之后,结果是:

  Creating tables ...
  Installing custom SQL ...
  Installing indexes ...
  No fixtures found.

这是什么意思?

无论如何,当我访问网站管理面板http://www.example.com/admin/时,收到此消息:

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

setting.py包含:

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    # Uncomment the next line to enable the admin:
    'django.contrib.admin',
)

ur.py包含:

from django.conf.urls.defaults import patterns, include, url

# Uncomment the next two lines to enable the admin:
from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
    # Examples:
    # url(r'^$', 'rshd.views.home', name='home'),
    # url(r'^rshd/', include('rshd.foo.urls')),

    # Uncomment the admin/doc line below to enable admin documentation:
     url(r'^admin/doc/', include('django.contrib.admindocs.urls')),

    # Uncomment the next line to enable the admin:
     url(r'^admin/', include(admin.site.urls)),
)

10 个答案:

答案 0 :(得分:74)

如果您只从项目中运行一个网站,那么您真的不需要sites框架,因此最简单的解决方法是从您的{{1} 删除以下项目错误应该消失:

INSTALLED_APPS

您还可以从shell重新创建缺少的Site对象。运行python manage.py shell然后:

'django.contrib.sites'

答案 1 :(得分:7)

如果您使用django.contrib.sites 而不通过更改SITE_ID = 1文件中的settings.py值来删除此错误,则可以解决此错误。

当我在服务器上更改域名时,我发生了这种情况,我手动从http://mynewdomainname.com/admin/sites/site/删除了旧域名,数据库中的旧域记录有id = 1,我也添加了新的域名mynewdomainname.com,ID为id = 2 我刚刚更改为SITE_ID = 2并且错误消失 SITE_ID指的是当前" pk"您默认使用的活动域名。 在代码中:

>>> from django.contrib.sites.models import Site
>>> # get_current() came from SiteManager class manager, 
>>> # see site-packages/django/contrib/sites/models.py
>>> current_site = Site.objects.get_current()
>>> print(current_site.pk)
2
>>> print(current_site.domain)
'http://mynewdomainname.com'

settings.py更改

之后发生这种情况
SITE_ID = 2

请注意 django sites app中的当前域ID。

答案 2 :(得分:3)

同样的问题也突然出现在我面前,你知道有很多解决方案。但是,这个突然问题的原因是什么?

深入挖掘后,我发现原因是,我们忽略了第一个syncdb操作中的一个步骤。

当你有第一个syncdb时,django会要求你创建一个默认帐户,如果你没有在这个交互式节目中输入,那么该网站对象就不会自动创建。

所以要小心这一点。我正在使用django 1.3.1,不知道最新版本是否解决了这个问题。

答案 3 :(得分:1)

通过另一种方式解决问题:

我使用PostgreSQL和Django 1.45 ...... 当我删除了www.example.com网站并添加了一个新的www.xxx.com网站时,它被添加为ID = 2 因为PostgreSQL没有返回ID号,登录和注销Django-Sites只是以某种方式绑定到你的DB中的ID = 1站点......

我去了我的PostgreSQL数据库并将www.xxx.com的ID更改为1,然后我又能够看到登录和注销网站:)

顺便说一句。 [是的,你可以从你的settings.py中删除django.contrib.sites如果你不需要它^^(但我没有在我的情况下尝试过这个,ID号问题)]

希望它能为更多用户服务! ;)

答案 4 :(得分:1)

由于上述评论很旧且syncdb命令不存在,我不想删除django.contrib.sites,这对我有用:

增量SITE_ID。我有SITE_ID = 1,将其更改为SITE_ID = 2,一切都恢复了。

答案 5 :(得分:0)

是,将 SITE_IT = 1 更改为 SITE_ID = 2 ,一切正常

答案 6 :(得分:0)

是的,顶部提到的解决方案可以是解决方案的一部分。

但是我注意到,不仅包括django.contrib.sites而不进行配置都会导致该问题,还包括 如果所述软件包的配置不正确,allauth(pip install django-allauth)可能会导致此问题。

(据我所见allauth在默认情况下未正确配置 ...)

答案 7 :(得分:0)

如果您遇到错误或只想更改站点,您可以做的另一件事很简单。

  1. 下载sqlitebrowser
  2. 打开你的 sqlite.db
  3. 搜索 django_sites
  4. 将域名和显示名称更改为您想要的任何名称

答案 8 :(得分:-1)

检查您的Window任务管理器并确保有1个进程名称'python.exe'正在运行。如果有很多,请删除所有这些,然后重新启动服务器。这个解决方案适合我。

答案 9 :(得分:-1)

在您的settings.py中添加SITE_ID = 1