服务器不遵循TEMPLATE_DIRS路径

时间:2014-02-17 11:09:29

标签: python django templates

TEMPLATE_DIRS中我的模板文件夹的路径如下所示:

os.path.abspath(os.path.join(os.path.dirname(__file__), os.pardir)) + '/static/templates/'

当我在本地运行我的服务器并打开页面时,一切正常,它会在~/Documents/projects/clupus/static/templates检测模板。每当我将所有内容都放到我的服务器上并访问URL时,它就会出现这个错误:

  

Django尝试按以下顺序加载这些模板:使用loader   django.template.loaders.filesystem.Loader:   /home/ubuntu/public_html/clupus.com/clupus/templates/clupus/index.html   (文件不存在)

它不跟随TEMPLATE_DIRS并且正在查找错误的目录。我检查了服务器上的TEMPLATE_DIRS值,它与我本地的值相匹配。有什么问题?

修改

相当令人尴尬的是,我的代码没有任何问题,我只是忘了通过sudo service apache2 restart重新启动apache。至于为什么我的模板文件夹是静态的,这是前端开发人员的要求。当我问他为什么说:

  

他们在里面的原因是因为我试图在Javascript中引用模板,因为我们在服务器和客户端之间使用共享模板

2 个答案:

答案 0 :(得分:1)

首先要做的事情是:静态和模板是两个非常独立的“事物”,不应该有任何共同之处 - 这意味着“模板”目录应该在“静态”旁边,而不是在其中。

默认情况下,Django会在两个位置查找模板文件:

  • TEMPLATE_DIRS
  • 中指定的目录/目录 每个已安装的应用程序中的
  • templates目录(INSTALLED_APPS中的应用程序)

您的设置似乎对第一种情况有效,因此可能是一些简单的错误:

  • TEMPLATE_DIRS还是一个元组吗? TEMPLATE_DIRS =( os.path.blah.blah, ),逗号是必要的
  • 当您的templates目录位于static目录中时,我没有看到会导致问题的确切机制,但您一定要将其移出。
  • 确保TEMPLATE_LOADERS设置为default value

答案 1 :(得分:0)

静态URL应指向staticfiles目录。为什么要在staticfiles下放置模板?您可以将它作为主文件夹中的单独文件夹(以及manage.py)