Подтвердить что ты не робот

Сайт администратора: TemplateDoesNotExist at/admin/

Я следую официальному учебнику 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
)

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

I do имеют django.contrib.admin в моем INSTALLED_APPS в settings.py

4b9b3361

Ответ 1

Поскольку он работает на компьютерах других людей, и поскольку у вас включен загрузчик каталогов приложений, сайт администратора включен в 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

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

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

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

Ответ 3

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

  • Отредактируйте параметр 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'
    ]
    
  • Измените параметр TEMPLATE в файле settings.py следующим образом (обратите внимание на добавленную опцию "загрузчики" и что 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',
            ],
        },
    }]
    
  • И наконец, я обновил файл urls.py следующим образом (обратите внимание на include для 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'),
    ]
    

Ответ 4

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

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

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

Ответ 5

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

i.e из вашего каталога /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

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

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

Ответ 6

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

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

  2. TemplateDoesNotExist в 'admin/index.html' Приложение settings.py было настроено только на запуск django.template.backends.jinja2.Jinja2 как TEMPLATES BACKEND. Но администратору нужен стандартный django.template.backends.django.DjangoTemplates чтобы он работал. Я читал, что можно было настроить два шаблонных двигателя. Я скопировал стандартный блок из другого приложения. Исправлена.

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

    FORM_RENDERER = 'django.forms.renderers.Jinja2'
    

    и прокомментировал это, получив Admin.

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

Ответ 7

В моем случае мне пришлось изменить 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',
            ],
        },
    },
]

Ответ 8

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

Ответ 9

Я столкнулся с аналогичной проблемой, пытаясь настроить 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. См. @Abrie Nel ответ выше.

Ответ 10

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

Ответ 11

Несмотря на свою полезность, вышеупомянутые ответы являются частичными. Я полагаю, что разработчик должен знать, что происходит в фоновом режиме, а именно: "как" возникает это исключение.

Как видно из исключения, Exception является TemplateDoesNotExist, а имя значения - это путь, и что-то не так с файлом loader.py. Хотя я использовал Django 1.1.4, я уверен, что исключение возникает из-за строки (в loader.py), где проверяется os.path.isdir(template_dir). Он не может найти папку шаблона (каталог) в папке django, которая находится в папке site-packages в папке Lib python.

Интуитивно можно сказать, что это из-за неуместной установки django. Это, однако, хорошее упражнение, чтобы выяснить причину исключения, перерываясь через источник. Когда эта ошибка возникла в моем проекте, я не переустанавливал django, вместо этого я скопировал папки из корня (C:/Python27/django/contrib) - да, я использую Windows - для своей копии в пакетах сайтов, и это сработало

Ответ 12

Я добавляю "ответ", так как я не могу с моей текущей "репутацией" добавить комментарий.

Следующее решение Аарона:

В проекте с Django 1.4 с докером с той же проблемой (доступ к yourproject/admin/login.html или yourproject/admin/index.html). Я использовал это в python.dockerfile и решил:

"RUN pip install -r requirements.txt --no-cache-dir"

Перед тем, как я это сделал, я проверил ввод в докере, что внутри папки usr/local/lib/python2.7/site-packages/django/contrib/admin/папка /templates/не существует.

Я читал это, прежде чем перейти к этому сообщению: https://www.mail-archive.com/[email protected]&q=subject:%22TemplateDoesNotExist+at+%5C%2Fadmin%5C%2F%22&o = новейший & F = 1

Ответ 13

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

это два работает для меня. Я использую Django 2.2.3

Ответ 14

Я думаю, что есть некоторые пакеты, которые вы не установили в INSTALLED_APPS, в моем случае я установил 'import_export', так как я использовал 'importexportmodels