Pyramid: 找不到静态资源

2 投票
1 回答
813 浏览
提问于 2025-04-18 03:46

我正在尝试部署一个Pyramid应用程序。我的域名是 wisderm.com。虽然HTML页面已经加载出来了,但静态资源(比如css、js、图片和字体)却没有显示。

在我的 /etc/nginx/sites-enabled/default 文件中,我根据 这个教程 设置了静态文件的位置,如下所示:

location /static {
  root                    /home/SkinProject; 
                          # this path + /skinproject/static is the absolute 
                          # path to my static directory 
  expires                 30d;
  add_header              Cache-Control public;
  access_log              off;
}

在我的 __init__.py 文件中,我添加了一个静态视图:

config.add_static_view('static', 'static', cache_max_age=3600) 

在我的HTML模板中,我尝试了两种方式来加载静态资源:

<link href="{{request.static_url('skinproject:static/css/<mycssfile>)}}">

一种是用于CSS文件,另一种是像 /static/images/products/product_name/01.jpg 这样的相对网址,用于其他所有资源。

但是这两种方式都不管用。在Chrome开发者工具的网络选项卡中,所有文件的状态码都是 404 Not Found,意思是找不到文件。

我查看了 关于静态文件的Cookbook页面,但似乎内容已经过时了。我还查阅了 关于静态资源的官方文档,但我对是否需要为每个静态目录注册单独的静态视图感到困惑,比如:

config.add_static_view(name='http://wisderm.com/images', path='skinproject:static/images')
config.add_static_view(name='http://wisderm.com/css', path='skinproject:static/css')

那么,正确的做法是什么呢?

1 个回答

2

我本来不想自己回答自己的问题,但我把 /static 改成了 /static/,并且把所有静态链接都改成了相对链接,这样就解决了我的问题。

撰写回答