Python 烧瓶404';基于资产目录中的静态内容
我的项目结构如下所示:Python 烧瓶404';基于资产目录中的静态内容,python,python-3.x,flask,Python,Python 3.x,Flask,我的项目结构如下所示: /project home app.py /templates/index.html /templates/assets <link rel="stylesheet" href="assets/css/slick.css"> <link rel="stylesheet" href="assets/css/slick-theme.css"> 我的index.html文件中有几个对相关样式表的引用,如下所示: /project home app.p
/project home
app.py
/templates/index.html
/templates/assets
<link rel="stylesheet" href="assets/css/slick.css">
<link rel="stylesheet" href="assets/css/slick-theme.css">
我的index.html文件中有几个对相关样式表的引用,如下所示:
/project home
app.py
/templates/index.html
/templates/assets
<link rel="stylesheet" href="assets/css/slick.css">
<link rel="stylesheet" href="assets/css/slick-theme.css">
我试着用谷歌搜索并在烧瓶中更改这一行
STATIC_URL_PATH = '/templates/assets/' # Where the css is stored
STATIC_FOLDER = '/templates/assets/'
app = flask.Flask(__name__, static_folder=STATIC_FOLDER,
static_url_path=STATIC_URL_PATH)
但当我点击模板中的index.html页面时,它仍然能够很好地加载所有CSS、JS和图像,但从Flask中,它就像是去掉了CSS一样。首先,确保模板文件夹与app.py位于同一目录中:
然后像这样创建Flask实例:
/project home
app.py
/templates/index.html
/templates/assets
<link rel="stylesheet" href="assets/css/slick.css">
<link rel="stylesheet" href="assets/css/slick-theme.css">
STATIC\u文件夹='templates/assets'
app=烧瓶(名称),
静态文件夹=静态文件夹)
首先,/templates
和templates
(不含/
)是两种不同的路径。第一个是指系统根路径/
下的templates
文件夹,它肯定不是您想要的。第二个是指同一目录中的templates
文件夹,这是您想要的文件夹
第二,如果与静态\u文件夹
相同,则无需指定静态\u url\u路径
,因为这是(“默认为静态\u文件夹
文件夹的名称”)
然后,在HTML文件中,让Flask为您构建URL,而不是硬编码资产文件夹的路径。请参阅以下章节:
要为静态文件生成URL,请使用特殊的'static'
端点
姓名:
url\u用于('static',filename='style.css')
默认情况下,它将在静态文件夹(例如static/style.css)下查找静态文件,因为它是Flask
构造函数中的静态文件。当您将其设置为templates/assets时,Flask将使用它,并将自动为使用URL\u构建正确的URL
注意:
测试静态文件加载时,请确保先清除浏览器的缓存,或在浏览器的私有/匿名模式下测试应用程序,以强制重新下载静态文件。首先,确保templates文件夹与app.py位于同一目录中:
然后像这样创建Flask实例:
/project home
app.py
/templates/index.html
/templates/assets
<link rel="stylesheet" href="assets/css/slick.css">
<link rel="stylesheet" href="assets/css/slick-theme.css">
STATIC\u文件夹='templates/assets'
app=烧瓶(名称),
静态文件夹=静态文件夹)
首先,/templates
和templates
(不含/
)是两种不同的路径。第一个是指系统根路径/
下的templates
文件夹,它肯定不是您想要的。第二个是指同一目录中的templates
文件夹,这是您想要的文件夹
第二,如果与静态\u文件夹
相同,则无需指定静态\u url\u路径
,因为这是(“默认为静态\u文件夹
文件夹的名称”)
然后,在HTML文件中,让Flask为您构建URL,而不是硬编码资产文件夹的路径。请参阅以下章节:
要为静态文件生成URL,请使用特殊的'static'
端点
姓名:
url\u用于('static',filename='style.css')
默认情况下,它将在静态文件夹(例如static/style.css)下查找静态文件,因为它是Flask
构造函数中的静态文件。当您将其设置为templates/assets时,Flask将使用它,并将自动为
使用URL\u构建正确的URL
注意:
请确保在测试静态文件加载时,首先清除浏览器的缓存,或者在浏览器的私有/匿名模式下测试应用程序,以强制重新下载静态文件。谢谢Gino,我最后用url\u for expression进行了类似的尝试,并在发布此问题一小时后使其正常工作。这个答案有很多有用的信息,但我不知道,而且是正确的答案,所以我选择它作为最佳答案。谢谢吉诺,我最终用url_作为表达式进行了类似的尝试和错误,并在发布这个问题一小时后使其工作。这个答案有很多我不知道的有用信息,是正确的答案,所以我选择它作为最佳答案