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中引用模板,因为我们在服务器和客户端之间使用共享模板
答案 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)