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_作为表达式进行了类似的尝试和错误,并在发布这个问题一小时后使其工作。这个答案有很多我不知道的有用信息,是正确的答案,所以我选择它作为最佳答案