Администратор сайта: TemplateDoesNotExist в / admin / - PullRequest
16 голосов
/ 25 января 2012

Я следую официальному Django Tutorial 2 , но по какой-то причине не могу создать сайт администратора, несмотря на то, что, насколько я понимаю, все шаги выполнены правильно.

Это ошибка, которую я получаю:

TemplateDoesNotExist at /admin/
admin/login.html
Request Method: GET
Request URL:    http://127.0.0.1:8000/admin/
Django Version: 1.3.1
Exception Type: TemplateDoesNotExist
Exception Value:    
admin/login.html
Exception Location: /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/template/loader.py in find_template, line 138
Python Executable:  /Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python
Python Version: 2.7.2
Python Path:    
['/Users/jcugley/Documents/Programming/Python/Django/mysite',
 '/Library/Python/2.7/site-packages/setuptools-0.6c11-py2.7.egg',
 '/Library/Frameworks/Python.framework/Versions/2.7/lib/python27.zip',
 '/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7',
 '/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin',
 '/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac',
 '/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages',
 '/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk',
 '/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-old',
 '/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload',
 '/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages',
 '/Library/Python/2.7/site-packages']
Server time:    Tue, 24 Jan 2012 18:40:03 -0600

Ошибка возникает после того, как я раскомментировал следующие строки (с комментариями):

### urls.py ###
from django.conf.urls.defaults import patterns, include, url

from django.contrib import admin # THIS LINE
admin.autodiscover() # THIS LINE

urlpatterns = patterns('',
    url(r'^admin/', include(admin.site.urls)), # THIS LINE
)

Если я прокомментирую их снова, это избавит от ошибки.

У меня есть есть django.contrib.admin в моем INSTALLED_APPS в settings.py

Ответы [ 14 ]

25 голосов
/ 12 августа 2015

Я столкнулся с той же проблемой, и мне пришлось заставить pip повторно загрузить django.

pip install -r requirements.txt --ignore-installed --force-reinstall --upgrade --no-cache-dir

Примечание: я знаю, что опция --no-cache-dir необходима, я не уверен, чтодругие опции все обязательны.

9 голосов
/ 17 июля 2016

Я использую Django версии 1.9.7, и при попытке добавить admin_tools (меню и панель инструментов) в мое приложение у меня возникла похожая проблема.Я обнаружил, что должен был сделать три вещи:

  1. Отредактируйте параметр INSTALLED_APPS в settings.py следующим образом ( обратите внимание, что admin_tools предшествует django contrib, 'mines' - это имямоего приложения ):

    INSTALLED_APPS = [
        'admin_tools',
        'admin_tools.theming',
        'admin_tools.menu',
        'admin_tools.dashboard',
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'mines'
    ]
    
  2. Измените настройку TEMPLATE в файле settings.py следующим образом ( обратите внимание на добавленную опцию 'loaders', ичто APP_DIRS теперь имеет значение false ):

    TEMPLATES = [{
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [],
        'APP_DIRS': False,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
            'loaders': [
                'django.template.loaders.filesystem.Loader',
                'django.template.loaders.app_directories.Loader',
                'admin_tools.template_loaders.Loader',
            ],
        },
    }]
    
  3. И, наконец, я обновил свой файл urls.py следующим образом ( обратите внимание на включение для URL-адресов admin_tools):

    from django.conf.urls import include,url
    from django.contrib import admin
    from mines.views import SummaryByMapIcon
    
    urlpatterns = [
        url(r'^admin_tools/', include('admin_tools.urls')),
        url(r'^admin/', admin.site.urls),
        url(r'^summarybymapicon$', SummaryByMapIcon, name='summarybymapicon'),
    ]
    
6 голосов
/ 28 декабря 2017

Я решил эту же проблему, переустановив Django с опцией --no-cache-dir:

pip uninstall django
pip install django --no-cache-dir

Решено благодаря ответу здесь .

4 голосов
/ 25 января 2012

Поскольку он работает на чужих машинах, а у вас включен загрузчик каталогов приложений, сайт администратора включен в INSTALLED_APPS, и это все, что нужно для обнаружения шаблонов (я имею в виду, что еще можно сделать? ) - Я могу только предположить, что что-то не так с вашей установкой django.

Это был бы хороший шанс начать использовать virtualenvs и новую установку django для исключения ваших настроек:

Запустите терминал, перейдите в каталог вашего проекта (на самом деле это не имеет значения ...)

pip install virtualenv # if you don't have it.

virtualenv --no-site-packages env 
# this creates a virtual python environment that doesn't include system packages

source env/bin/activate
# this forces your bash session to use that environment

pip install django
# installs a fresh copy of django to your new environment

cd path_to_my_django_project    
# now go to your site directory

python manager.py runserver
# visit admin site.
2 голосов
/ 27 июля 2018

В моем случае мне пришлось изменить APP_DIRS с False на True

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates')],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]
2 голосов
/ 23 апреля 2018

Унаследовав Django-приложение от опытного мага, я хотел понять модель, посмотрев на нее через Django-admin. Поскольку модель приложения еще не была в Admin, я создал admin.py и столкнулся с различными проблемами. Я попробовал All-Of-The-Above (TM) и нашел это:

  1. Я запутался в путях. Я поместил файл admin.py в неправильный каталог. Если у вас есть что-то вроде .../app/app/app/app/app..., убедитесь, что вы знаете, какой app должен содержать admin.py. Я понял это, положив в файл дерьмо и заметив, что он не потерпит крах. Следовательно, «дерьмо» не было выполнено, и что-то не так с файлом. Исправлено.

  2. TemplateDoesNotExist в 'admin / index.html' Приложение settings.py было настроено для запуска только django.template.backends.jinja2.Jinja2 в качестве ОБРАЗЦОВ ШАБЛОНОВ. Но Админу нужен стандарт django.template.backends.django.DjangoTemplates, чтобы он работал. Я прочитал , что можно было настроить два шаблонизатора. Я скопировал стандартный блок из другого приложения. Исправлено.

  3. TemplateDoesNotExist on 'admin / widgets / related_widget_wrapper.html' Пока Админ работал, просмотр отдельных объектов все еще был нарушен. Я искал недостающий шаблон и нашел его на своем месте. Изменение чего-либо в настройках TEMPLATES ничего не улучшит. Я вручную вставил пути в 'DIRS': [], изменил параметры, удалил бэкэнд Jinja, ничего. Я чувствовал, что снова меняю неправильный файл Используя отладчик, я обнаружил, что даже без настройки Jinja он все равно будет запускать Jinja. Наконец, в settings.py я заметил это:

    FORM_RENDERER = 'django.forms.renderers.Jinja2'
    

    и комментируя это, Админ ушел.

Не уверен, что он делает с остальной частью приложения, но для изучения это нормально.

2 голосов
/ 02 сентября 2015

Была такая же проблема.Странно, но я обнаружил, что иногда template и media не копируются из вашего django / contrib / admin.Поэтому вам необходимо скопировать их в ваш виртуальный каталог env django.

т.е. из вашего каталога /venv/lib/python2.7/site-packages/django/contrib вам нужно

ln -s ~/Sites/your_dj_app/venv/django/contrib/admin/templates templates

и

ln -s ~/Sites/your_dj_app/venv/django/contrib/admin/media media

Я так рад, что моя проблема решена, но так раздражен, что мне пришлось потратить более часа на ее устранение.

Надеюсь, вам не придется:)

1 голос
/ 11 мая 2018
for windows user the admin_tools in the templates section should be place in the begining

   'loaders': [
            **'admin_tools.template_loaders.Loader',**    
            'django.template.loaders.filesystem.Loader',
            'django.template.loaders.app_directories.Loader',
1 голос
/ 20 февраля 2018

Я столкнулся с подобной проблемой, пытаясь настроить django-admin-tools для Django 2.0.2

В конце концов я все заработал. Вот мои TEMPLATES настройки.

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates')],
        'APP_DIRS': False,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
            'loaders' : [
                'django.template.loaders.filesystem.Loader',
                'django.template.loaders.app_directories.Loader',
                'admin_tools.template_loaders.Loader',
                ]
        },
    },
]

Это сработало, даже если я переопределил шаблон администратора по умолчанию.

Обязательно обратите внимание, где разместить приложения django-admin-tools. См. Ответ Абри Нел выше.

1 голос
/ 17 августа 2015

Я сталкиваюсь с той же ошибкой, после нескольких раз установки и удаления Pip Django, это все еще не работает. Затем я загружаю файл Django tar.gz с сайта Django и устанавливаю из этого файла все в порядке. Надеюсь, это кому-нибудь поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...