2012-07-13 82 views
9

可能重复:
Django view - load template from calling app's dir firstDjango的模板名称冲突

我有许多应用Django项目。其实文件结构如下:

myproj/ 
    default/ 
    templates/ 
     index.html (1) 
    app1/ 
    templates/ 
     index.html (2) 
    app2/ 
    templates/ 
     index.html (3) 

我预计,活跃应用程序的模板目录具有最高的优先级,当模板解决。但实际上,我根据INSTALLED_APPS命令获得了第一个模板! 如果我更改安装的应用程序的顺序 - 相应地更改模板。

问题:有没有办法从当前应用程序中首先获取模板?模板名称/显式目录规范的唯一性是实现它的唯一方法吗?

+1

你可能想看看http://stackoverflow.com/questions/3092865/django-view-load-template-from-calling-apps-dir-first – Rohan 2012-07-13 13:00:22

+0

谢谢,就是这样。 – 2012-07-13 14:34:48

回答

10

通常的解决办法是把模板另一个子目录,您的应用程序命名,如:

myproj/ 
    app1/ 
    templates/ 
     app1/ 
     index.html 

这是由运做的应用程序(如django.contrib.admin)和工作得很好。我通常在模板根目录中使用通用名称,例如index.html,用于项目特定文件(例如整个站点的索引)。

+0

这就是Django的方式。我忘记了这一点,并删除了我的答案,因为这是我脑海中的正确答案。 – Jens 2012-07-13 13:01:18