我已经从原文中重新定义了这个问题,使其对于手头的问题更为重要。我的文件系统的相关部分如下。
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 /')
答案 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">