共享应用中的模板

时间:2014-02-05 14:21:20

标签: django django-templates

我有两个共享一些常见应用的django项目, 这是我的结构:

  • prj_1
  • prj_2
  • common_apps

从prj_1和prj_2我使用常见的应用程序,我想用不同的模板呈现这些应用程序。 我该怎么办?

1 个答案:

答案 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