我正在学习本教程,一切都很顺利,但该应用程序没有呈现静态文件夹中的文件(css、图像、脚本等(。
我对文件夹(sudo chmod a+rwx static(和子文件夹授予了所有权限,但仍然没有进行渲染。
我使用的代码是以前使用几乎相同配置的代码(当时的Ubuntu 18.04(
app = Flask(__name__,static_url_path='',static_folder="static")
我的nginx配置文件:
location / {
include uwsgi_params;
uwsgi_pass unix:/home/sydney/ecocathlon/ecocathlon.sock;
}
location /static {
root /home/sydney/ecocathlon/static;
}
你对我如何允许程序访问文件夹有什么想法吗?
提前感谢
Sydney R.
使用alias
而不是root
:
location /static {
alias /home/sydney/ecocathlon/static;
}
基于这个答案。
此外,我会将static_url_path
排除在应用程序定义之外,也将static_folder
排除在外,因为您只是将其设置为默认值:
app = Flask(__name__)
static_url_path
控制应用程序如何生成静态文件的URL,因此您可以通过将其设置为空字符串来强制它生成类似/something.js
而不是/static/something.js
的链接。
如果您可以使用wsgi提供文件,请检查whiteoise
如果您需要的话,它还可以简化以后迁移到CDN的操作。
使用
static_url_path=''
而不是默认的
static_url_path=None
你告诉Flask静态资源将存在于/
而不是/static
。这将混淆使用的尝试
location /static {
因为没有CCD_ 10url路径。但如果你尝试
location / {
请求永远不会到达应用程序的主页。
删除static_url_path=''
(并保留location /static
(,或者为解析为您希望nginx直接服务器化的文件的每个路由指定单独的位置。