Ошибка шаблона проекта Django: django.template.exceptions.TemplateDoesNotExist - PullRequest
0 голосов
/ 04 октября 2019

Я склонен использовать один и тот же шаблон проекта для большинства моих проектов Django. До сих пор я использовал copy-paste для использования шаблона в разных проектах. (Извините! Я не знал о опции --template, которая поставляется с django-admin.)

Я узнал о опции --template с django-admin некоторое время назад, и у меня возник вопрос по поводу того же.

В вышеупомянутом шаблоне, который я использую для своих проектов, есть несколько распространенных приложений Django, а именно accounts для обработки аутентификации пользователя, pages для обработки запроса на такие страницы, как «О нас», «Контакт» и т. Д., Инекоторые общие шаблоны Django, такие как base.html, шаблоны для электронной почты для активации учетной записи и электронной почты для сброса пароля.

Некоторые из общих шаблонов Django (например, шаблон входа) содержат в себе base.html. Вот где возникает проблема.

Я получаю сообщение об ошибке django.template.exceptions.TemplateDoesNotExist: base.html, когда пытаюсь использовать шаблон моего проекта с новым проектом.

Трассировка:

$ django-admin startproject --template=/home/alfarhanzahedi/Projects/django-boilerplate/project_name --extension=py,html simpleqa
Traceback (most recent call last):
  File "/home/alfarhanzahedi/Projects/temp/venv/bin/django-admin", line 10, in <module>
    sys.exit(execute_from_command_line())
  File "/home/alfarhanzahedi/Projects/temp/venv/lib/python3.7/site-packages/django/core/management/__init__.py", line 381, in execute_from_command_line
    utility.execute()
  File "/home/alfarhanzahedi/Projects/temp/venv/lib/python3.7/site-packages/django/core/management/__init__.py", line 375, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/home/alfarhanzahedi/Projects/temp/venv/lib/python3.7/site-packages/django/core/management/base.py", line 323, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/home/alfarhanzahedi/Projects/temp/venv/lib/python3.7/site-packages/django/core/management/base.py", line 364, in execute
    output = self.handle(*args, **options)
  File "/home/alfarhanzahedi/Projects/temp/venv/lib/python3.7/site-packages/django/core/management/commands/startproject.py", line 20, in handle
    super().handle('project', project_name, target, **options)
  File "/home/alfarhanzahedi/Projects/temp/venv/lib/python3.7/site-packages/django/core/management/templates.py", line 154, in handle
    content = template.render(context)
  File "/home/alfarhanzahedi/Projects/temp/venv/lib/python3.7/site-packages/django/template/base.py", line 171, in render
    return self._render(context)
  File "/home/alfarhanzahedi/Projects/temp/venv/lib/python3.7/site-packages/django/template/base.py", line 163, in _render
    return self.nodelist.render(context)
  File "/home/alfarhanzahedi/Projects/temp/venv/lib/python3.7/site-packages/django/template/base.py", line 937, in render
    bit = node.render_annotated(context)
  File "/home/alfarhanzahedi/Projects/temp/venv/lib/python3.7/site-packages/django/template/base.py", line 904, in render_annotated
    return self.render(context)
  File "/home/alfarhanzahedi/Projects/temp/venv/lib/python3.7/site-packages/django/template/loader_tags.py", line 176, in render
    template = context.template.engine.get_template(template_name)
  File "/home/alfarhanzahedi/Projects/temp/venv/lib/python3.7/site-packages/django/template/engine.py", line 143, in get_template
    template, origin = self.find_template(template_name)
  File "/home/alfarhanzahedi/Projects/temp/venv/lib/python3.7/site-packages/django/template/engine.py", line 129, in find_template
    raise TemplateDoesNotExist(name, tried=tried)
django.template.exceptions.TemplateDoesNotExist: base.html

Настройки в settings.pyправильно настроен, так как шаблон проекта, кажется, работает нормально через python manage.py runserver. Все шаблоны Django загружаются правильно.

Я знаю, что включение шаблонов Django в шаблон проекта предлагает очень небольшую помощь (или гибкость?), Но я просто хотел знать, есть ли решение для этой ошибки!

Я вижу, что есть опция --settings с django-admin startproject. Я пытался использовать его, но безрезультатно!

Есть ли решение этой проблемы?

Спасибо!

1 Ответ

0 голосов
/ 04 октября 2019

Когда вы используете опции --template=... --extension=py,html, Django будет отображать все ваших шаблонных файлов во время создания проекта. Это означает, что вам придется избегать всех тегов шаблонов, которые Django должен игнорировать при создании проекта.

Вероятно, было бы проще поместить специфичные для проекта биты вашего шаблона в ваши настройки и передать их в ваши шаблоныс контекстным процессором.

Если вы используете одни и те же приложения в нескольких проектах, вы также можете рассмотреть возможность их превращения в многоразовое приложение .

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