我有两个共享一些常见应用的django项目, 这是我的结构:
从prj_1和prj_2我使用常见的应用程序,我想用不同的模板呈现这些应用程序。 我该怎么办?
答案 0 :(得分:0)
是的,使用以下目录结构:
common_apps
app1
templates
app1
# default templates for common app live here
prj_1
templates
app1
# overridden templates for app1 live here (using same file name)
在一个地方的文档中没有明确说明这一点,但您的prj_1
模板会覆盖common_apps
,因为Django中的default setting看起来像:
TEMPLATE_LOADERS = (
'django.template.loaders.filesystem.Loader',
'django.template.loaders.app_directories.Loader',
)
...您的典型Django设置文件将具有以下内容:
TEMPLATE_DIRS = (
os.path.join(PROJECT_ROOT, 'templates'),
# where PROJECT_ROOT is absolute path to prj_1/
)
...这意味着在寻找'app1 / base.html'时,filesystem.Loader
将首先被调用,并会在prj_1
中找到任何被覆盖的模板,因此app_directories.Loader
不会被叫。
这里有一些信息:
https://docs.djangoproject.com/en/dev/ref/contrib/admin/#overriding-admin-templates