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