Python 为什么不';t当我通过电脑访问金字塔应用程序时,静态资产加载';谁的IP地址?
我有一个金字塔应用程序,我一直在开发并通过Python 为什么不';t当我通过电脑访问金字塔应用程序时,静态资产加载';谁的IP地址?,python,pylons,pyramid,Python,Pylons,Pyramid,我有一个金字塔应用程序,我一直在开发并通过http://localhost:6543,这是贴纸文档的建议。有各种资源,例如.css文件,可在静态目录中使用,我通过config.add_static_view('static','static')通过localhost查看时,一切正常,我的.css文件已加载,一切正常。但是,当我通过计算机的主机名/IP地址查看应用程序时,不会加载静态资产 新安装的金字塔粘贴器脚手架显示相同的行为。我已经阅读并遵循了金字塔叙事文档,完成了一个叫做的步骤,所有的工作都
http://localhost:6543
,这是贴纸文档的建议。有各种资源,例如.css
文件,可在静态
目录中使用,我通过config.add_static_view('static','static')
通过localhost
查看时,一切正常,我的.css文件已加载,一切正常。但是,当我通过计算机的主机名/IP地址查看应用程序时,不会加载静态资产
新安装的金字塔粘贴器脚手架显示相同的行为。我已经阅读并遵循了金字塔叙事文档,完成了一个叫做的步骤,所有的工作都如所描述的那样。但将位置栏中的URL从http://localhost:6543
至http://my.host.name:6543
并且样式表不会加载
资产可用;类型<代码>http://my.host.name:6543/static/pylons.css在新创建的金字塔粘贴支架上,您可以读取css的内容,但在加载根页面时不会加载css。Firebug表示这些资源已被请求,但从未收到
这里发生了什么,当我通过localhost
以外的其他方式请求静态资产时,如何确保它们被加载
编辑以添加一些代码。这是来自金字塔starter
paster支架,我没有修改它,它展示了与我的应用程序相同的行为;这可以看作是一个极小的例子
从程序包的\uuuuu init\uuuuuuuuy.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()
from pyramid.view import view_config
@view_config(route_name='home', renderer='templates/mytemplate.pt')
def my_view(request):
return {'project':'TestProject'}
完成视图.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()
from pyramid.view import view_config
@view_config(route_name='home', renderer='templates/mytemplate.pt')
def my_view(request):
return {'project':'TestProject'}
来自模板/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
提供了样式表文本。如果无法查看您的代码,则回答此问题有点困难。基于类似的经验,我猜测您可能没有在模板中使用static_url方法。以下是在模板中引用静态资产的另一种方法:
<link rel="stylesheet" href="${request.static_url('app:static/css/app.css')}">
你在用那个吗?使用其他任何东西都会导致您看到的行为
如果应用程序安装到的路径不是文档路径,则可能会出现问题。您可以看到这一讨论。我将使用相对URL:
href=“/static/pylons.css
,但是就像你说的,没有看到他的代码,我不知道发生了什么。哎呀!对不起,我想既然我对粘贴脚手架也有同样的问题,那么发布代码就没有必要了,因为每个能够提供帮助的人都有或者可以很容易地获得脚手架。我将在上面添加一些代码。您在文档中提到的批准方式是否存在?我还没有看到它,正如Jonathan所建议的,我一直在使用相对URL,这也是脚手架使用的。可以找到文档。看起来这可能是金字塔里的一只虫子。也许你的问题的实际解释也是如此。好吧,现在它似乎起作用了,尽管我没有改变什么。当我问这个问题时,我甚至回到了当前的修订版本,而且它是有效的。不过,谢谢你提供的信息!