2

我已经从最初的问题重新定义了这个问题,使其对手头的问题更加基础。我的文件系统的相关部分如下。

env
    tutorial
        tutorial
            templates
                view.pt
            static
                myjava.js
            views.py
            __init__.py

现在我的 view.pt 模板有

<script type="text/javascript" src="/static/myjava.js"></script>

然后在我的__init__.py,我有

config.add_static_view(name='static',path='env/tutorial/tutorial/static')

最后,myjava.js 文件本身非常简单:

document.write("hello from the javascript file")

我正在尝试遵循此文档:http ://docs.pylonsproject.org/projects/pyramid/en/latest/narr/assets.html

但现在没有任何文字出现。我觉得问题出在我给它的路径上。

我有一些想法:在 config.add_static_view 中,name='static' 令人困惑。我希望用户能够访问网址 www.domain.com/firstpage,其中 firstpage 是使用 javascript 文件资源(静态文件夹中的文件)的模板的结果。我担心这些静态资产仅适用于以 www.domain.com/static/ 开头的网址...这是一个有效的问题吗?如何告诉 config.add_static_view 函数为从 view.pt 模板呈现的任何视图提供静态资源?

编辑:这是有效的:

在模板中,使用 src="${request.static_url('tutorial:static/myjava.js')}"

然后在init .py 中使用 config.add_static_view(name='static',path='tutorial:static/')

4

2 回答 2

2

您在模板中的 javascript 链接应该类似于src="${request.static_url('tutorial:static/myjava.js')}"

这使您的应用程序更容易重新定位。

这也使用了适当的资产规范,使用包的名称、“教程”、冒号,然后是相对于“教程”包位置的路径,在您的情况下,包位于env/tutorial/tutorial.

编辑:我忘记了 Configurator 对象。

在这里,您想使用类似的资产规范,例如config.add_static_view('static', 'tutorial:static/').

您也可以为不同的目录制作不同的静态视图,例如: config.add_static_view('images', 'tutorial:images/')

当您执行此类操作时,您可以将应用程序的根目录移动到另一个位置,从而允许您拥有http://mysite.com/stable/http://mysite.com/devel/可以访问/被重写到/stable/.

静态视图可以从任何模板调用,代码如下${request.static_url('tutorial:images/icons/favicon.ico')}

于 2013-01-25T19:15:57.723 回答
1

正在阅读此处的文档,看起来当您调用add_static_view它时会更改文件的路径?引用文档:

这意味着您希望将 /var/www/static 中的文件作为 /static URL 前缀的子 URL 提供。因此,当用户访问应用程序的 URL /static/foo.css 时,将返回文件 /var/www/static/foo.css。

就您而言,由于您调用的是env/tutorial/tutorial/static“静态”,因此您可能想尝试src="static/Three.js">

于 2013-01-19T23:43:14.050 回答