【问题标题】:Do the Templates in django need to move to public while using Passenger使用Passenger时django中的模板是否需要公开
【发布时间】:2016-08-12 13:52:46
【问题描述】:

对python和Flask非常熟悉,但是刚开始接触Django。

环境

Dreamhost、Django 1.9(我认为)、python 2.7.3、Passenger

问题STMT

我的应用程序正在运行,可以直接从views.py 使用HttpResponse 生成索引页面。但是,当我尝试合并模板时,我收到“TemplateDoesNotExist at /”

因为我是新手,所以我不确定从哪里开始进行故障排除。这是乘客问题还是 Django?

详情

我在 settings.py 中修改了我的 [DIRS] 以引用模板目录。

'DIRS': ['CTracker/templates'],

然后我在 CTracker 和“clientadmin”(我的应用程序的名称)目录下创建了模板目录,最后创建了 index.html 文件。

-CTracker
 |
 |-CTracker
 | |
 | -templates
 |  |
 |  -clientadmin
 |   |
 |    -index.html
 |-manage.py

views.py 中的我的函数使用以下返回值。

return render(request, 'clientadmin/index.html', {
        'clients': client,
    })

故障排除完成

  • 仔细检查文件是否存在并显示文件路径 在文件系统和 settings.py 文件中都正确。
  • 我尝试运行“manage.py collectstatics”,但移动了 0 个文件。

提前谢谢你。任何帮助表示赞赏。

【问题讨论】:

  • 您应该查看 Django 向您显示的 full 错误消息。它应该告诉您模板加载器搜索的目录。这通常可以让您找出您的设置出了什么问题。

标签: python django passenger


【解决方案1】:

DIRS 列表中的项目应该是完整路径,例如:

'DIRS': ['/path/to/CTracker/CTracker/templates'],

Django 设置文件应该有一个BASE_DIR 定义。您可以将其与 os.path.join 一起使用,以避免对完整路径进行硬编码。

'DIRS': [os.path.join(BASE_DIR, 'CTracker', 'templates')]

【讨论】:

  • 宾果游戏!谢谢那行得通。使用:'DIRS':[os.path.join(BASE_DIR, 'CTracker/templates')],
猜你喜欢
  • 2010-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-30
  • 1970-01-01
  • 2010-09-29
  • 2011-12-19
  • 1970-01-01
相关资源
最近更新 更多