60

我无法让 CSS 正确输出 - 我的网页都没有样式。

这是我所有模板中的链接。我究竟做错了什么?

<link type="text/css" rel="stylesheet" href="/stylesheets/style.css"/>

Flask 有什么特别的地方可以让它工作吗?

我已经尝试和改变了大约半个小时,但似乎无法做到正确。

总结一下:你如何用 Flask 做 CSS - 我必须有任何特殊的 python 代码吗?

4

11 回答 11

93

你不需要对 Flask 做任何特别的事情来让 CSS 工作。也许你正在style.css投入flask_project/stylesheets/?除非正确配置,否则您的应用程序不会提供此类目录。查看Flask 快速入门的静态文件部分了解更多信息。但是,总而言之,这就是您想要做的:

  1. 移动您需要的静态文件project_root/static/。假设您搬进stylesheets/style.cssproject_root/static/stylesheets/style.css.

  2. 改变

    <link ... href="/stylesheets/style.css" />
    

    <link ... href="{{ url_for('static', filename='stylesheets/style.css') }}" />
    

    这告诉模板解析器(Jinja2)告诉 Flask 在你的项目目录中找到配置的静态目录(默认情况下,static/)并返回文件的路径。

    • 如果你真的想要,你可以将路径设置为/static/stylesheets/style.css. 但是你真的不应该那样做 - usingurl_for允许你切换你的静态目录并且仍然有工作,以及其他优点。

而且,正如@RachelSanders 在她的回答中所说:

在生产环境中,您最好通过 apache 或 nginx 提供静态文件,但这对开发人员来说已经足够了。

于 2012-12-08T00:50:42.050 回答
62

尝试使用重新加载 chrome

ctrl + shift + R

于 2019-12-14T04:22:44.653 回答
19

执行此操作的 4 个步骤(在此处建立了很多其他答案,假设您已正确设置 Flask):

1)在您的文件夹中创建一个静态文件app夹:[root_folder]/app/static/

2) 将所有静态内容(图像、JavaScript、CSS 等)移动到这些文件夹中。将内容保存在各自的文件夹中(不是强制性的,只是更整洁、更有条理)。

3)修改__init__.py文件app夹中的文件以具有此行:

app.static_folder = 'static'

这将允许您的应用程序识别您的static文件夹并相应地读取它。

4) 在您的 HTML 中,设置您的文件链接,如下所示:

<link ... href="{{ url_for('static', filename='[css_folder]/[css-file].css') }}" />

例如,如果您将 CSS 文件夹称为“样式表”并将文件称为“样式”:

<link ... href="{{ url_for('static', filename='stylesheets/styles.css') }}" />

那应该正确设置所有内容。祝你好运!

于 2016-06-22T06:59:49.740 回答
9

您需要在 Flask 应用程序中创建一个名为“static”的文件夹,然后将所有 CSS 文件放在那里。

http://flask.pocoo.org/docs/quickstart/#static-files

在生产环境中,您最好通过 apache 或 nginx 提供静态文件,但这对开发人员来说已经足够了。

于 2012-12-08T00:43:27.913 回答
3

就我而言 - macOS 10.13 上的 safari - 清除缓存就可以了。

于 2018-04-03T08:44:49.923 回答
3

ctrl + shift + R 技巧有效,尤其是在第一次运行期间加载 css 时(这意味着所有路径都很好);但是,如果对 css 进行了更改,则无法重新加载。

于 2020-08-10T17:21:24.683 回答
2

使用(mac OS)简单地硬刷新:

command + shift + R
于 2020-07-27T21:11:14.213 回答
2

尝试在浏览器中进行硬刷新。您可能正在查看缓存版本。在Firefox中按住CTRL并按F5。

于 2020-02-11T16:11:24.180 回答
2

我创建了静态文件夹,将我的 CSS 放入其中并正确链接它,但它不起作用。我清除了浏览器的缓存,它工作。或者,您可以通过在 chrome 上按Ctrl+来硬刷新浏览器。F5

于 2020-04-29T12:05:16.337 回答
1

“如果您更改静态文件,请刷新浏览器页面。如果更改未显示,请尝试清除浏览器的缓存。” -Flask 文档

于 2020-05-01T19:59:01.860 回答
0

处理程序的顺序可能会导致问题:

  • url: /stylesheets static_dir: 样式表
  • 网址:/.* 脚本:helloworld.application

将工作而不是

  • 网址:/.* 脚本:helloworld.application
  • url: /stylesheets static_dir: 样式表
于 2014-10-09T16:31:31.920 回答