我有一个金字塔应用程序,我一直在开发并通过http://localhost:6543
在本地查看,这是贴纸文档的建议。 .css
目录中提供了各种资源,例如static
文件,我通过config.add_static_view('static','static')
提供了这些资源。当我通过localhost
查看时,一切正常,我的.css文件已加载,一切都很好。但是,当我通过计算机的主机名/ IP地址查看应用程序时,不会加载静态资产。
新安装的金字塔贴纸脚手架显示相同的行为。我已经通过名为viewing the application的步骤完成并遵循金字塔叙事文档,一切都按照描述的方式工作。但是,将位置栏中的网址从http://localhost:6543
更改为http://my.host.name:6543
,并且不会加载样式表。
资产可用;在新创建的Pyramid paster脚手架上键入http://my.host.name:6543/static/pylons.css
,您可以读取css的内容,但在加载根页面时不会加载它。 Firebug表示请求了这些资源,但从未收到过。
这里发生了什么,以及如何通过localhost
以外的其他方式确认我的静态资产是否已加载?
修改以添加一些代码。这是来自金字塔starter
贴纸脚手架,我没有修改过,它表现出与我的应用相同的行为;它可以被视为一个最小的例子。
__init__.py
的:
def main(global_config, **settings):
""" This function returns a Pyramid WSGI application.
"""
config = Configurator(settings=settings)
config.add_static_view('static', 'static', cache_max_age=3600)
config.add_route('home', '/')
config.scan()
return config.make_wsgi_app()
完成views.py
:
from pyramid.view import view_config
@view_config(route_name='home', renderer='templates/mytemplate.pt')
def my_view(request):
return {'project':'TestProject'}
来自templates/mytemplate.pt
的相关行:
<link rel="stylesheet" href="/static/pylons.css" type="text/css" media="screen"
charset="utf-8" />
static/pylons.css
位于根目录下的static
目录中。
同样,在浏览器中打开http://0.0.0.0:6543
(FF10)工作正常,http://my.host.name:6543
显示没有样式信息的页面;但是http://my.host.name:6543/static/pylons.css
给了我样式表文本。
答案 0 :(得分:3)
无法查看您的代码,回答这个问题有点困难。我基于类似经验的猜测是,您可能没有在模板中使用static_url方法。以下是在模板中引用静态资产的另一种方法:
<link rel="stylesheet" href="${request.static_url('app:static/css/app.css')}">
你正在使用它吗?使用其他任何东西肯定会导致你看到的行为。
如果将应用程序安装到不是文档路径的路径,则似乎存在问题。您可以看到here。