2011-10-17 63 views
2

這些網址的工作:Django管理顯示所有的應用程序,模型,但管理模型頁面返回404

/admin 
/admin/appname 

但是,這並不爲任何工作模型,包括用戶,組,或站點:

/admin/appname/modelname 

例如,/admin/auth作品並顯示Groups,並Users車型,但如果我點擊任一機型,導航到admin/auth/user,我收到404未找到錯誤。

我首先認爲這可能是urls.py中的一個問題,所以我除了管理員註釋掉了所有內容。它沒有任何區別。這是我的urls.py文件:

from django.conf.urls.defaults import * 
from django.contrib import admin 

urlpatterns = patterns('', 
    # main admin 
    (r'^admin/', include(admin.site.urls)), 
) 
admin.autodiscover() 

這裏是我安裝的應用程序,在settings.py

INSTALLED_APPS = (
    'django.contrib.auth', 
    'django.contrib.contenttypes', 
    'django.contrib.sessions', 
    'django.contrib.sites', 
    'django.contrib.messages', 
    'django.contrib.staticfiles', 
    'django.contrib.admin', 
    'south', 
) 

我當然已經嘗試關閉服務器,運行syncdb,(以及爲應用程序運行向南遷移那是使用南),並再次使用runserver。沒什麼區別。

我也嘗試卸載並重新安裝django(同一版本,1.3)。

的Django嘗試這些URL模式,順序如下:

  1. ^admin/ ^$ [name='index']
  2. ^admin/ ^logout/$ [name='logout']
  3. ^admin/ ^password_change/$ [name='password_change']
  4. ^admin/ ^password_change/done/$ [name='password_change_done']
  5. ^admin/ ^jsi18n/$ [name='jsi18n']
  6. ^admin/ ^r/(?P<content_type_id>\d+)/(?P<object_id>.+)/$
  7. ^admin/ ^(?P<app_label>\w+)/$ [name='app_list']

當前的URL,admin/auth/user/,不符合任何這些。

+0

如果將'admin.autodiscover()'移動到urls.py文件的頂部,緊接着導入之後會發生什麼? –

+0

@DanielRoseman:恩,這工作,謝謝!但爲什麼? – BenjaminGolder

回答

4

正如我在我的評論中提到,你顯然需要有admin.autodiscover()前的地方,你將其包含在urlpatterns元組。

這似乎是因爲計算每個應用/模型的url的代碼 - admin.sites.AdminSite.get_urls - 取決於管理員在運行之前已經爲其註冊的模型。如果沒有,則不會創建相關的URL。

相關問題