【问题标题】:django admin shows all apps, models, but admin model pages return 404django admin 显示所有应用程序、模型,但管理模型页面返回 404
【发布时间】:2011-10-17 16:32:38
【问题描述】:

这些网址有效:

/admin
/admin/appname

但这不适用于任何模型,包括用户、组或站点:

/admin/appname/modelname

例如,/admin/auth 工作并显示 Groups 和 Users 模型,但如果我单击任一模型,导航到 admin/auth/user,我会收到 404 not found 错误。

我首先认为这可能是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/ 与其中任何一个都不匹配。

【问题讨论】:

  • 如果在导入之后将admin.autodiscover() 移到 urls.py 文件的顶部会发生什么?
  • @DanielRoseman:嗯 .. 成功了,谢谢!但为什么呢?

标签: django django-admin


【解决方案1】:

正如我在评论中提到的,您显然需要将admin.autodiscover() 行之前放在将其包含在urlpatterns 元组中的位置。

这似乎是因为计算每个应用程序/模型的 url 的代码 - admin.sites.AdminSite.get_urls - 取决于在运行之前已经为管理员注册的模型。如果没有,则不会创建相关的 URL。

【讨论】:

    猜你喜欢
    • 2021-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-13
    • 2011-10-17
    • 2020-09-30
    • 2021-06-06
    • 1970-01-01
    相关资源
    最近更新 更多