使用Django 1.8
我有两个同名的模板
base.html
在/mysite/templates/base.html
另一个来自同名应用程序(基本.html)在位置,
/mysite/app/templates/base.html
我的模板设置
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(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',
],
},
},
]
视图
^{pr2}$这叫'基本.html,但如何从app/template
目录调用模板。在
谢谢你的推荐!在
更新:
我已经将应用程序位置添加到模板目录中
'DIRS': [os.path.join(BASE_DIR, 'templates'), os.path.join(BASE_DIR, 'app/templates')],
现在我的IDE显示了这两个文件,但仍呈现了根目录的base.html
。如何引用一个模板而不是另一个模板?在
更新: 修复了在应用程序模板级别添加一个目录的问题。在
现在我的应用程序模板目录结构如下所示
mysite/app/templates/app/base.html
如果应用程序在已安装的应用程序元组中,则TEMPLATE DIR中不需要os.path.join(BASE_DIR, 'app/templates')
。在
更有效的django1.8解决方案值得欢迎。在
对于您当前的目录结构,您不能-这样做是为了允许您稍后在
INSTALLED_APPS
设置中通过应用程序覆盖模板。惯例是使用更类似于以下内容的目录结构:然后使用
app1/base.html
或app2/base.html
来引用您想要的那个。在编辑
为了更清楚地说明我的意思:您的项目结构可以如下所示:
^{pr2}$然后,您可以使用
base.html
获取第一个模板,使用app/base.html
获取另一个模板,相关的应用程序模板都打包在它们引用的应用程序中,但都是名称空间的。在最好在文件结构中创建额外级别。所以把模板放在
templates/<app_name>/
文件夹中。然后可以用templates/app1/base.html
和templates/app2/base.html
来引用它们。在相关问题 更多 >
编程相关推荐