【问题标题】:Pyramid directory structure confusion金字塔目录结构混乱
【发布时间】:2015-03-06 12:52:46
【问题描述】:

我有一个金字塔项目,其目录结构如下。在我的 views.py 中,我有这行代码指定我的模板在哪里。

@view_config(route_name='home', renderer='templates/mytemp.pt')

现在,我收到一个错误,因为它正在我的视图目录中寻找我的模板。即使我将路径指定为“demo/templates/mytemp.pt”,我也会遇到同样的错误。

ValueError: Missing template asset: demo.view:templates/mytemp.pt (/home/Demo/demo/view/templates/mytemp.pt)

这是我的目录结构:-

   Demo/
    |-- Demo.egg-info
    `-- demo
        |-- errors
        |-- model
        |-- scripts
        |-- static
        |   `-- somefolder
        |-- templates
        |-- test
        `-- view

我的 views.py 位于视图文件夹中,而 mytem.pt 位于模板文件夹中。任何帮助表示赞赏。谢谢。

【问题讨论】:

  • 您可以将../ 附加到renderer 参数的开头吗?
  • @samGbos:ValueError:缺少模板资产:demo.view:../template/mytemp.pt (/home/Demo/demo/view/../template/mytemp.pt)跨度>
  • 检测错字(模板->模板S),试试../templates/mytemp.pt
  • uralbash 和 @samGbos,你们让我开心。谢谢 :) 你能把这个添加为解决方案吗?

标签: python pyramid


【解决方案1】:

试试asset specification

@view_config(route_name='home', renderer='demo:templates/mytemp.pt')

如果您的项目是这样命名的,则“Demo”中可能会使用大写“D”:

@view_config(route_name='home', renderer='Demo:templates/mytemp.pt')

【讨论】:

  • 它说 ImportError: No module named Demo
  • 这不是你的项目名称吗?然后尝试demo:,使用小写的“d”
  • @Tania,资产规范可能比../ 更受欢迎,因为它使根成为您的项目目录并从那里开始工作。它还提供了一些安全性,这样您就不会错误地查看项目目录之外的内容。在 Pyramid 中,资产规范(仅表示使用 demo:)几乎在您需要指向目录结构中的文件/目录的任何地方都很有用,因为它为您的目录路径提供了一个逻辑起点。
  • --并且您不必考虑当前文件(您正在写入的文件)相对于您要指向的文件的位置 - 如果您稍后决定将文件移动到其他目录中。
  • 您可以将其添加为@Raj 的答案,因为它提供了一些非常有用的信息.. ++1 供您解释。
【解决方案2】:

../ 附加到渲染器参数的开头似乎有效。 :)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-15
    相关资源
    最近更新 更多