2012-03-16 345 views
22

我有Django管理员的一些问题。Django管理员DoesNotExist在/管理员/

执行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)), 
) 
+0

只需在'urls.py'文件中使用'from django.conf.urls.defaults import *'和'from django.conf import settings'并检查 – 2012-03-16 12:19:33

+0

感谢Harshith JV但是不会改变任何东西 – 2012-03-16 12:27:15

+0

你可以看到syncdb的结果不包含为管理员创建表! – 2012-03-16 12:28:52

回答

73

如果您只运行一个站点,您并不需要sites框架项目,所以最简单的解决将是INSTALLED_APPS删除以下项目的错误应该消失:

'django.contrib.sites' 

您还可以重新创建壳缺少的站点对象。运行python manage.py壳,然后:

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

雅去除''django.contrib.sites''应该工作 – 2012-03-16 13:22:41

+0

感谢您的努力Mr-Ramandeep Singh – 2012-03-16 14:30:55

+0

随时.... !!!! – 2012-03-16 20:11:29

1

由刚刚解决了该问题的另一种方式:

我使用PostgreSQL和Django的1.45 ... 因为我删除了www.example.com站点和添加了一个新的www.xxx.com网站它被添加为ID = 2 因为PostgreSQL不会返回到身份证号码中,并且登录和注销Django网站不知何故绑定到您的数据库中的ID = 1网站...

我去了我的PostgreSQL数据库和改变www.xxx.com的ID为1,然后我能看到的登录和注销再次网站:)

btw。 [是的,你只可以从你的settings.py删除django.contrib.sites如果你不需要它^^(但我没有试过这一个在我的情况下,与身份证号码的问题)

希望它可以为更多的用户使用! ;)

+0

如果是这样的话,至少在您的settings.py文件中更改SITE_ID而不是手动编辑数据库。 – Atrus 2013-03-05 15:33:04

3

同样的问题也突然来找我,你知道有很多是解决方案。但是,这个突发问题的原因是什么?

在深入挖掘后,我发现原因是,我们忽略了第一执行syncdb行动的一个步骤。

当你有你的第一个执行syncdb,Django会要求您创建一个默认的帐户,如果你在这个互动节目不输入,该站点对象不会被自动创建。

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

-1

检查窗口的任务管理器,并确保有正在运行1进程名“python.exe”。如果有很多,请将其全部删除,然后重新启动服务器。这个解决方案适用于我。

0

你可以,如果你使用的是django.contrib.sites没有settings.py文件改变SITE_ID = 1值取出修复此错误。

,当我在我的服务器上更改域名它是发生在我身上,我从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的网站应用当前域ID。