use*_*759 6 python django templates
我是Django的新手.我正在使用Django 1.8.6与Python 2.7.我正在尝试使用base.html模板,该模板可以在整个网站中使用全局,每个应用都可以访问它.这是我的测试网站的当前结构:
twms
民意调查
迁移
静态的
模板
项目
迁移
静态的
模板
项目
的index.html
tmws
静态的
模板
tmws
base.html文件
这是project/templates/project/index.html的代码
{% extends 'tmws/base.html' %}
{% block content %}
<h1>Projects</h1>
<ul>
{% for project in project_list %}
<li><a href="{% url 'project:detail' project.id %}">{{ project.name }}</a></li>
{% endfor %}
</ul>
end of list
{% endblock %}
Run Code Online (Sandbox Code Playgroud)
这是我收到的错误:
/ project /上的TemplateDoesNotExist
tmws/base.html文件
如何从我的任何应用访问tmws/tmws/templates/tmws/base.html?
任何帮助将不胜感激!
如果需要任何其他信息,请与我们联系.
编辑
以下是来自settings.py的模板设置:
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [
os.path.join(BASE_DIR, 'templates'), # If i leave both or just comment one one out I still get the same error
'tmws.tmws.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',
],
},
},
]
Run Code Online (Sandbox Code Playgroud)
Pab*_*ada 11
我认为您的模板目录配置可能有问题.在项目的settings.py中尝试检查您是否具有与此类似的配置:
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'your template dir name')]
,
'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',
],
},
},
]
Run Code Online (Sandbox Code Playgroud)
哪里'your template dir name'应该是tmws.这将使django在您尝试在HTML中扩展模板时搜索此目录.您可以根据需要添加任意数量的目录.
我想现在Django必须在以下位置搜索模板:
twms/project/templates/project
Run Code Online (Sandbox Code Playgroud)
所以,如果你把base.html文件放在那里,Django就能找到它.
另一个建议是创建一个通用模板目录并将base.html放在那里,因为您希望它在整个站点中使用.这只是我对订购模板的品味,但它应该以任何一种方式工作.
编辑:
在settings.py中添加以下内容解决了问题.阅读评论以获取更多信息:
MASTER_BASE_DIR = os.path.dirname(__file__)
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(MASTER_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',
],
},
},
]
Run Code Online (Sandbox Code Playgroud)