Ответ 1
Хорошо, я исправил это, это была глупая ошибка, но я уже играл с этим последние 2 часа. Я должен был объявить свое приложение до django.contrib.admin. В противном случае это не принимается.
Я пытаюсь получить пользовательские шаблоны для страницы администратора для Django, но не увенчался успехом. Я прочитал документацию django и несколько блогов, которые объясняют это как простой шаг, который, как я предполагал, был.
Как сейчас, страница администратора работает, но моя собственная переработка CSS или шаблонов не работает. Моя настройка выглядит следующим образом
/project_folder/
manage.py
settings.py
urls.py
__init__.py
/app/
views.py
models.py
__init__.py
/templates/
/admin/
base_site.html
В urls.py у меня есть
(r'^admin/', include(admin.site.urls)),
Работает с тех пор, как я не могу войти в систему и т.д. Поэтому я предполагаю, что /admin/base _site.html перезапишет файл по умолчанию, но он ничего не делает.
Кто-нибудь знает, что здесь происходит? Я последовал за ним из учебников/гидов Django и пошел в некоторые блоги, чтобы узнать, есть ли у них ответы, но все они сказали то же самое.
Изменить 1: У меня правильно настроена настройка шаблонов.
TEMPLATE_DIRS = (
os.path.join(PROJECT_PATH, 'templates/'),
)
Это работает правильно, так как у меня остался весь мой сайт, работающий с медиа-каталогом для CSS и т.д. Единственное, что не кажется "принимающим" шаблоны, - это раздел администратора.
Хорошо, я исправил это, это была глупая ошибка, но я уже играл с этим последние 2 часа. Я должен был объявить свое приложение до django.contrib.admin. В противном случае это не принимается.
Еще одна ошибка, которую нужно устоять перед этим упражнением. Упражнение говорит, чтобы изменить это...
<h1 id="site-name"><a href="{% url 'admin:index' %}"> {{ site_header|default:_('Django administration') }} </a></h1>
к этому...
<h1 id="site-name"><a href="{% url 'admin:index' %}">Polls Administration</a></h1>
Возникает соблазн изменить константу строки, но это неверно. То есть НЕ делайте этого, он не изменит заголовок:
<h1 id="site-name"><a href="{% url 'admin:index' %}"> {{ site_header|default:_('Polls Administration') }} </a></h1>
Это была ошибка, которую я совершил, и мне пришлось тщательно проделать это упражнение, чтобы исправить это.
Я не мог распознать шаблон администратора при выполнении этого шага во второй части учебника Django.
Вот как я это решил:
Используя информацию в этом ответе, я напечатал значение TEMPLATE_DIRS
:
settings.py
(для меня это R:\jeffy\programming\sandbox\python\django\tutorial\mysite\mysite\
)python
>>> import settings
>>> settings.TEMPLATE_DIRS
, который выводит ['R:\\jeffy\\programming\\sandbox\\python\\django\\tutorial\\mysite\\templates']
Итак, это ожидаемое местоположение каталога шаблонов для этого проекта. В это входит каталог admin, и файл base_site.html
переходит в это.
Другая проблема, с которой я столкнулся, заключалась в том, что она работает, но я только изменил поле <TITLE>
, поэтому я просто этого не заметил. (Я думал, что меняю основной заголовок.)
Убедитесь, что вы установите TEMPLATE_DIRS
в settings.py
в правильную папку!
У меня была такая же проблема, проходя через учебник Django 1.6.5 (https://docs.djangoproject.com/en/1.8/intro/tutorial02/), но понял, что это ошибка в нечитании внимательно. В этом уроке вы поместите это в свои settings.py:
TEMPLATES = [
{
...
'DIRS': [os.path.join(BASE_DIR, 'templates')],
...
}
Затем я помещал папку шаблонов, которую я хотел бы поставить переопределить для сайта администратора в приложении, как и в вашем примере:
/project_folder/
manage.py
settings.py
urls.py
__init__.py
/app/
views.py
models.py
__init__.py
/templates/
/admin/
base_site.html
С этим это не сработало бы по той причине, что было похоже на вопрос, который вы отметили Даниэлем Роземэном в одном из комментариев, мой DIR
оценивал project_folder/templates
(как я сказал). Затем я заметил, что в учебнике явным образом сказал, что папка templates/admin
находится на уровне проекта, а не на уровне приложения:
Создайте каталог шаблонов в каталоге проектов (тот, который содержит manage.py). Шаблоны могут жить в любой файловой системе, доступной Django. (Django работает как любой пользователь, который запускает ваш сервер.) Тем не менее, сохранение ваших шаблонов в проекте является хорошим соглашением.
Сделав это, я имел следующую структуру:
/project_folder/
manage.py
settings.py
urls.py
__init__.py
/templates/
/admin/
base_site.html
/app/
views.py
models.py
__init__.py
С этим все работало, как ожидалось (я мог бы перезаписать стандартные шаблоны django для страниц администратора).
В то время как вы можете разместить шаблоны где угодно и настроить Django, чтобы найти их, кажется, имеет смысл разместить ваши основные шаблоны администратора на уровне проекта, поскольку админ-сайт не является специфичным для приложения, но доступен для всего проекта.