2016-11-25 63 views
3

所以我已经将旧项目从Django 1.6升级到1.10,现在所有来自特定目录的模板都不再加载。这些模板如何在Django中指定模板加载的顺序?

位置在

/project/templates/userena 

这些模板应该是压倒一切的模板包含在

/usr/local/bin/python2.7/dist-packages/userena 

我已经阅读了模板载入Django文档,但它确实userena库根本没有意义。

目前我settings.py有这个

TEMPLATES = [ 
    { 
     'BACKEND': 'django.template.backends.django.DjangoTemplates', 
     'DIRS': [ 
         os.path.join(BASE_DIR, 'templates'), 
       ], 
     'APP_DIRS': False, 
     'OPTIONS': { 
      'debug': DEBUG, 
      'context_processors': [ 
       'django.template.context_processors.debug', 
       'django.template.context_processors.request', 
       'django.contrib.auth.context_processors.auth', 
       'django.contrib.messages.context_processors.messages', 
      ], 
      'loaders': [ 
       'django.template.loaders.filesystem.Loader', 
       'django.template.loaders.app_directories.Loader', 
      ], 
     }, 
    }, 
] 

什么我需要在我的settings.py改变才能有Django的负载从模板/项目/模板/ userena?

回答

2

Django根据'loaders'选项依次使用模板加载器。它使用每个加载器,直到加载器找到匹配。 (docs)。

所以,是的,订购很重要。

+0

嗯,我甚至都不知道我使用的两个装载机都完全是这样,我想我会试着切换顺序并查看它是否有效。 – david

+0

简短对不起。第一个加载器正在搜索字典的“DIRS”键中指定的所有目录。第二个,你已经安装在你的项目中的所有应用程序中。在你的特定情况下,它实际上有点棘手,因为你的应用程序和本地模板目录都有相同的名称。我不确定,但它应该适用于您当前的排序,因为文件系统加载器是在'project/templates/userena'中寻找的。你可以用模板渲染来更新你的文章吗? – martinarroyo

+0

我离开了所有的模板设置,但我切换了我的INSTALLED_APPS的顺序,现在模板加载正确。 – david