【问题标题】:Page not found in Django admin when adding Group or FlatPage添加 Group 或 FlatPage 时在 Django 管理中找不到页面
【发布时间】:2012-03-11 05:07:48
【问题描述】:

在管理控制台中,我可以通过标准身份验证应用程序添加和编辑用户,并通过标准站点应用程序添加和编辑站点,但如果我尝试添加组,我会收到缺少通常 URLconf 列表的 404 错误:

Page not found (404)
Request Method: GET
Request URL:    http://127.0.0.1:8000/admin/auth/group/add/
You're seeing this error because you have DEBUG = True in your Django settings file. Change that to False, and Django will display a standard 404 page.

数据库中没有组,我可以访问http://127.0.0.1:8000/admin/auth/group/看到空列表就好了。

对于平面页面,数据库中有条目,并且所有 SITE_ID 都与我的设置文件匹配。但是,在这种情况下,http://127.0.0.1:8000/admin/flatpages/flatpage/(应该列出它们)和http://127.0.0.1:8000/admin/flatpages/flatpage/add/ 都会给出 404 错误,但没有给出 URLconf 信息。

平面页面的公共方面确实有效。所有内容都按预期提供。问题仅在管理控制台中。

这是我的 urls.py 文件的内容:

from django.conf.urls.defaults import *
from django.conf import settings

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

urlpatterns = patterns('',
  (r'^shortener|g|p/', include('charon_sheet.shortener.urls')),
  (r'^admin/doc/', include('django.contrib.admindocs.urls')),
  (r'^admin/', include(admin.site.urls)),
  (r'^', include('charon_sheet.ghosts.urls')),
)

if settings.DEBUG:
  urlpatterns += patterns('',
    (r'^public/(?P<path>.*)$', 'django.views.static.serve',
      {'document_root': settings.MEDIA_ROOT, 'show_indexes':True }),
  )

我没有接触管理界面的自定义应用程序,因此没有 admin.py 文件。

这是我的中间件:

MIDDLEWARE_CLASSES = (
    'django.middleware.common.CommonMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware',
)

我的模板上下文处理器:

TEMPLATE_CONTEXT_PROCESSORS = (
    'django.core.context_processors.media',
    'django.contrib.auth.context_processors.auth',
    'django.core.context_processors.request',
    'charon_sheet.context_processors.sharing_url_context_processor',
)

还有我安装的应用程序:

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.flatpages',
    'django.contrib.messages',
    'charon_sheet.shortener',
    'charon_sheet.ghosts',
    # Uncomment the next line to enable the admin:
    'django.contrib.admin',
    'django.contrib.admindocs',
)

我尝试了以下方法:

  • 更改 urlpatterns 的顺序(特别是将 charon_sheet.ghosts.urls 放在管理行上方)
  • 删除自定义上下文处理器
  • 将 FlatpageFallbackMiddleware 放在中间件列表的各个位置
  • 将我的应用放在 INSTALLED_APPS 列表中的管理应用下方
  • 清除平面数据库表
  • 重新安装 Django

这些都没有改变错误。

这是使用 Django 1.3 和 python 2.6,并且在标准开发服务器上和通过Passenger 在更像生产的环境中发生。

我已经没有想法尝试这个了。有任何想法吗?希望这很简单。

【问题讨论】:

  • 您是否尝试从 urls.py 和 INSTALLED_APPS 中删除所有 charon_sheet 实例?
  • @dan-klasson: '害怕,这并没有什么不同。
  • 您是否尝试过完全删除 FlatpageFallbackMiddleware(或将其注释掉)?这似乎是您没有看到 url 模式列表的原因,并且可能会导致真正的错误。
  • @ilvar:不幸的是,注释掉 FlattpageFallbackMiddleware 并不会添加回 url 模式,也不会更改或修复错误。 :-(
  • 我刚刚遇到了这个问题。如果您解决了此问题,请发布。

标签: django django-admin django-flatpages


【解决方案1】:

正如预期的那样,这是一个 URL 模式问题。以下是charon_sheet.shortener.urls 文件的内容:

urlpatterns = patterns(
  '',
  url(r'shorten/(?P<app_prefix>.*?)/$',
    view    = shorten,
    name    = 'shorten'
    ),
  url(r'(?P<id_hex>[a-fA-F0-9]+)(/)?$',
    view    = expand,
    name    = 'expand'
    )
)

最后一个模式是吞噬某些 URL。将 charon_sheet.shortener.urls 文件的包含移到管理员模式下方解决了该问题。

【讨论】:

    猜你喜欢
    • 2012-11-18
    • 2021-03-29
    • 2021-08-30
    • 2012-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-19
    相关资源
    最近更新 更多