Почему Django генерирует исключение всякий раз, когда я включаю admin.autodiscover ()? - PullRequest
0 голосов
/ 21 декабря 2009

Вот мои настройки. Я использую Django версии 1.1.1 на Dreamhost, Python 2.4. Проблема, с которой я сталкиваюсь, заключается в том, что всякий раз, когда я создаю простое приложение и включаю admin.autodiscover (), Django выдает исключение. Моя настройка:

from django.conf.urls.defaults import *
from testapp.views import HelloWorld

from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
    (r'^HelloWorld/$', HelloWorld),

    # Uncomment the admin/doc line below and add 'django.contrib.admindocs' 
    # to INSTALLED_APPS to enable admin documentation:
    (r'^admin/doc/', include('django.contrib.admindocs.urls')),

    # Uncomment the next line to enable the admin:
    (r'^admin/', include(admin.site.urls)),
)

Мой файл settings.py выглядит так:

INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.admin',
'django.contrib.admindocs',
'testapp',
)

Мой testapp.views выглядит так:

from django.http import HttpResponse

def HelloWorld(request):
    return HttpResponse("Hello world")

Если я закомментирую admin.autodiscover (), я смогу посмотреть на HelloWorld. Если я включаю admin.autodiscover (), Django выдает исключение, которое я не могу перехватить.

Кто-нибудь знает, почему это может происходить и что я могу сделать, чтобы это исправить?

Ответы [ 3 ]

4 голосов
/ 23 июля 2012

У меня была похожая проблема, когда я переименовал приложение. По сути, если вы запустили приложение и использовали администратора, используя admin.autodiscover() в своем файле urls.py, это приведет к созданию файла admin.pyc в папке вашего приложения. Удалите этот admin.pyc файл и снова запустите сервер ... и вуаля!

1 голос
/ 21 декабря 2009

Я собираюсь предположить, что testapp / admin.py не импортирует модели models.Model, для которого вы создаете admin. Попробуйте следующее:

./manage.py shell # you may immediately get a stack trace
>> import testapp.admin # I'll bet it blows up.
0 голосов
/ 07 июля 2016

Старый вопрос, но все еще актуален. У меня была похожая проблема, которая поставила меня в тупик сегодня. Проблема заключалась в том, что я преобразовал набор файлов в каталоге в папке приложения Django (lib/cache) в один файл (lib/cache.py). Поскольку в каталоге cache по-прежнему был __init__.py, Python рассматривал пустой каталог как модуль и препятствовал доступу к cache.py.

Комментируя admin.autodiscover() в моем urls.py, было немного легче отследить это, но все же потребовались некоторые догадки.

...