Путь к шаблону Django

Я следую учебному руководству на http://docs.djangoproject.com/en/dev/intro/tutorial02/#intro-tutorial02 в среде Windows 7. Мой файл настроек:

TEMPLATE_DIRS = (
    'C:/django-project/myapp/mytemplates/admin'
)

Я добрался base_template из шаблона admin/base_site.html из значения по умолчанию администраторский шаблонный каталог Django в исходном коде Django самом (django/contrib/admin/templates) в администраторский подкаталог myapp каталога, поскольку проинструктировано учебное руководство.

Это, кажется, не берет влияние по некоторым причинам. Какая-либо подсказка того, какова могла бы быть проблема? Я должен сделать синхронизирующий дб?

82
задан Druid 22 November 2012 в 13:09
поделиться

1 ответ

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

import os

PROJECT_PATH = os.path.realpath(os.path.dirname(__file__))

...

MEDIA_ROOT = PROJECT_PATH + '/media/'

TEMPLATE_DIRS = (
    PROJECT_PATH + '/templates/',
)

Таким образом, вы можете переместить ваш проект Django, и ваши корни путей будут обновлены автоматически. Это полезно, когда вы настраиваете свой рабочий сервер.

Во-вторых, что-то подозрительное с вашим путем TEMPLATE_DIRS. Он должен указывать на корень каталога вашего шаблона. Кроме того, он должен заканчиваться на трейлинг /.

Здесь я просто предположу, что каталог .../admin/ не является корнем вашего шаблона. Если вы все еще хотите писать абсолютные пути, вам следует убрать ссылку на каталог шаблона admin.

TEMPLATE_DIRS = (
    'C:/django-project/myapp/mytemplates/'
)

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

TEMPLATE_LOADERS = (
    'django.template.loaders.filesystem.load_template_source',
    'django.template.loaders.app_directories.load_template_source',
#     'django.template.loaders.eggs.load_template_source',
)

Вам не нужно копировать шаблоны администратора, если только вы специально не хотите что-то перезаписать.

Вам нужно будет запустить syncdb, если вы еще не запускали его. Вам также нужно будет статически прописать на сервер ваши медиа файлы, если вы размещаете django через runserver.

172
ответ дан 24 November 2019 в 09:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: