3

在管理控制台中,我可以通过标准身份验证应用程序添加和编辑用户,并通过标准站点应用程序添加和编辑站点,但是如果我尝试添加一个组,我会收到一个缺少通常 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 列表中的管理应用程序下方
  • 清除 Flatpage 数据库表
  • 重新安装 Django

这些都没有改变错误。

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

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

4

1 回答 1

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'
    )
)

The last pattern there was gobbling up certain URLs. Moving the inclusion of charon_sheet.shortener.urls file down below the admin pattern solved the issue.

于 2012-03-01T15:24:01.337 回答