添加Group或FlatPage时,在Django admin中找不到页面

时间:2012-02-20 20:52:39

标签: django django-admin django-flatpages

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

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/并查看空列表。

对于flatpages,数据库中有条目,并且所有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在类似生产的环境中发生。

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

1 个答案:

答案 0 :(得分: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'
    )
)

最后一种模式吞噬了某些网址。将charon_sheet.shortener.urls文件包含在管理模式下方可以解决问题。