Страница не найдена в админке Django при добавлении Group или FlatPage - PullRequest
3 голосов
/ 21 февраля 2012

В консоли администратора я могу добавлять и редактировать пользователей через стандартное приложение авторизации и сайты через стандартное приложение сайта, но если я пытаюсь добавить группу, я получаю сообщение об ошибке 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/ и увидеть пустой список просто отлично.

Для плоских страниц в базе данных есть записи, и все 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 и происходит как на стандартном dev-сервере, так и через Passenger в более производственной среде.

У меня заканчиваются идеи, чтобы примерить это. Есть идеи? Надеюсь, это что-то простое.

1 Ответ

1 голос
/ 01 марта 2012

Как и ожидалось, это была проблема шаблона 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 вниз под шаблоном администратора решило проблему.

...