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

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中,名称=“ static”令人困惑。我希望用户能够访问URL 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 /')

最佳答案

模板中的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//重写为/stable/

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

关于javascript - 如何将javascript源文件插入 Pyramid python应用程序并在模板中使用它们?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14419082/

10-11 03:57