Django项目模板错误:django.template.exceptions.TemplateDoesNotExist

时间:2019-10-04 10:51:42

标签: python django

我倾向于对大多数Django项目使用相同的项目模板。到目前为止,我一直在使用复制粘贴在不同项目中使用模板。 (抱歉!我没有意识到--template随附的django-admin选项。)

一段时间前,我认识了--template的{​​{1}}选项,对此有疑问。

我在我的项目中使用的上述模板具有一些常见的Django应用,即django-admin用于处理用户身份验证,accounts用于处理对“关于”,“联系”等页面的请求以及一些通用的Django模板,例如pages,用于帐户激活电子邮件和密码重置电子邮件的模板。

一些通用Django模板(例如“登录”模板)在其中扩展了base.html。这就是问题所在。

尝试在新项目中使用项目模板时出现错误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正常运行。所有Django模板均可正确加载。

我知道在项目模板中包含Django模板几乎没有帮助(或灵活性?),但是我只是想知道此错误是否有解决方案!

我看到python manage.py runserver--settings选项。我尝试使用它,但无济于事!

有没有解决这个问题的方法?

谢谢!

1 个答案:

答案 0 :(得分:0)

使用选项--template=... --extension=py,html时,Django将在项目创建过程中渲染 all 个模板文件。这意味着您必须在项目创建期间转义要Django忽略的所有模板标签。

将模板的项目特定位放入您的设置中,然后使用上下文处理器将其传递给模板可能会更容易。

如果您在多个项目中使用相同的应用程序,则可能还需要考虑将它们转换为reusable app