Сайт администратора: 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
Ответы
Ответ 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) и нашел это:
-
Я путаю пути. Я поместил файл admin.py
в неправильный каталог. Если у вас есть что-то вроде .../app/app/app/app/app...
убедитесь, что знаете, какое app
должно содержать admin.py
. Я понял это, положив дерьмо в файл и заметьте, что он не потерпит крах. Следовательно, 'crap' не был выполнен, и что-то не так с файлом. Исправлена.
-
TemplateDoesNotExist
в 'admin/index.html' Приложение settings.py
было настроено только на запуск django.template.backends.jinja2.Jinja2
как TEMPLATES BACKEND. Но администратору нужен стандартный django.template.backends.django.DjangoTemplates
чтобы он работал. Я читал, что можно было настроить два шаблонных двигателя. Я скопировал стандартный блок из другого приложения. Исправлена.
-
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