如何将JavaScript源文件插入到我的金字塔Python应用程序中,并在模板中使用它们?

2024-04-26 19:15:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我把这个问题从原来的一点上重新定义了一下,使它对手头的问题更加基本。我的文件系统的相关部分如下所示。在

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

现在我的视图.pt模板有

^{pr2}$

在我的__init__.py中,我

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

最后我的java.js文件本身非常简单:

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

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

但现在没有一条短信出现。我觉得问题出在我给它的路径上。在

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

编辑:以下是有效的方法:

在模板中,使用src=“${request.static\u url('教程:static/myjava.js')}”

然后在init.py中使用config.add_静态视图(name='static',path='教程:静态/')


Tags: 文件namepyenvviewadd视图模板
2条回答

正在读取docs here,而当您调用add_static_view时,它会更改文件的路径?引用文件:

this means that you wish to serve the files that live in /var/www/static as sub-URLs of the /static URL prefix. Therefore, the file /var/www/static/foo.css will be returned when the user visits your application’s URL /static/foo.css.

在您的例子中,由于您将env/tutorial/tutorial/static称为“static”,所以您可能需要尝试src="static/Three.js">

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

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

这也使用适当的资产规范,使用包的名称, “tutorial”,一个冒号,然后是相对于“tutorial”包位置的路径,在您的例子中,这个包位于env/tutorial/tutorial。在

编辑:我忘了配置器对象。在

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

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

当您这样做时,您可以将应用程序的根目录移到另一个位置,允许您将http://mysite.com/stable/和{}的访问权重写为/。在

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

相关问题 更多 >