如何将javascript源文件插入我的pyramid python应用程序并在我的模板中使用它们?

时间:2013-01-19 21:28:09

标签: javascript python templates pyramid

我已经从原文中重新定义了这个问题,使其对于手头的问题更为重要。我的文件系统的相关部分如下。

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 /')

2 个答案:

答案 0 :(得分:2)

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

这样可以更轻松地重新定位您的应用程序。

这也使用适当的资产规范,使用包的名称, “tutorial”,冒号,然后是相对于“tutorial”包位置的路径,在您的情况下,包是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/访问/的内容重写为{{ 1}}。

可以使用代码/stable/

的任何模板调用静态视图

答案 1 :(得分:1)

正在阅读docs here,当您拨打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">