当我通过计算机的IP地址访问我的金字塔应用程序时,为什么不加载静态资源?

时间:2012-01-31 17:53:13

标签: python pylons pyramid

我有一个金字塔应用程序,我一直在开发并通过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给了我样式表文本。

1 个答案:

答案 0 :(得分:3)

无法查看您的代码,回答这个问题有点困难。我基于类似经验的猜测是,您可能没有在模板中使用static_url方法。以下是在模板中引用静态资产的另一种方法:

<link rel="stylesheet" href="${request.static_url('app:static/css/app.css')}">
你正在使用它吗?使用其他任何东西肯定会导致你看到的行为。

如果将应用程序安装到不是文档路径的路径,则似乎存在问题。您可以看到here