2012-03-16 209 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。