Python Can';t在我的Flask应用程序中通过url_使用静态文件

Python Can';t在我的Flask应用程序中通过url_使用静态文件,python,flask,Python,Flask,我通过YouTube教程学习。每次(现在是我的第三个Flask系列)我都会遇到同样的问题——当我使用url\u时,静态文件夹中的文件不会执行它们应该执行的操作,例如: <link rel=stylesheet type=text/css href="{{ url_for('static', filename='styles.css') }}"> 我的意思是,.js什么都不做,.css不会改变元素的样式,图像不会出现在页面上。调试器不会显示任何错误。但是当我使用的url\u将用

我通过YouTube教程学习。每次(现在是我的第三个Flask系列)我都会遇到同样的问题——当我使用url\u时,静态文件夹中的文件不会执行它们应该执行的操作,例如:

<link rel=stylesheet type=text/css href="{{ url_for('static', filename='styles.css') }}"> 

我的意思是,.js什么都不做,.css不会改变元素的样式,图像不会出现在页面上。调试器不会显示任何错误。但是当我使用
url\u将用户重定向到另一个路由时,它工作得非常好!所以我不知道如何解决这个问题。我使用macbook,所以访问本地文件可能有问题

另外,我没有显示任何代码,因为我的代码中没有输入错误。即使我从导师的github复制了代码,我仍然有相同的问题。

的第一个参数是端点名称,
'static'
是一个特殊的端点名称,用于引用应用程序的名称:

只需在您的软件包中或软件包旁边创建一个名为
static
的文件夹 模块,它将在应用程序的
/static
上提供

要为静态文件生成URL,请使用特殊的“静态”端点 姓名:

文件必须以
static/style.css
的形式存储在文件系统中

因此,鉴于此:

<link ... href="{{ url_for('static', filename='styles.css') }}"> 
确保您的应用程序文件/文件夹结构如下:

app = Flask(__name__)
.
├── app.py
├── static
│   └── styles.css
└── templates
    └── app.html
.
├── app.py
├── static
│   ├── css
│   │   └── styles.css
│   └── js
│       └── app.js
└── templates
    └── app.html
<link ... href="{{ url_for('static', filename='css/styles.css') }}">
如果您是这样组织JS和CSS文件:

app = Flask(__name__)
.
├── app.py
├── static
│   └── styles.css
└── templates
    └── app.html
.
├── app.py
├── static
│   ├── css
│   │   └── styles.css
│   └── js
│       └── app.js
└── templates
    └── app.html
<link ... href="{{ url_for('static', filename='css/styles.css') }}">
然后您必须将的参数适当地更改为
url\u,如下所示:

app = Flask(__name__)
.
├── app.py
├── static
│   └── styles.css
└── templates
    └── app.html
.
├── app.py
├── static
│   ├── css
│   │   └── styles.css
│   └── js
│       └── app.js
└── templates
    └── app.html
<link ... href="{{ url_for('static', filename='css/styles.css') }}">
您还可以检查Flask调试器日志,以确保静态文件被正确访问:

 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
127.0.0.1 - - [29/Dec/2019 20:30:44] "GET / HTTP/1.1" 200 -
127.0.0.1 - - [29/Dec/2019 20:30:44] "GET /static/css/styles.css HTTP/1.1" 200 -
或浏览器的调试器/检查工具,以确保确实正确下载了文件:

 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
127.0.0.1 - - [29/Dec/2019 20:30:44] "GET / HTTP/1.1" 200 -
127.0.0.1 - - [29/Dec/2019 20:30:44] "GET /static/css/styles.css HTTP/1.1" 200 -

是否在应用程序实例化时指定静态文件夹?例如,
app=Flask(\uuuu name\uuuu,static\u folder='static')
?请显示您的文件和文件夹目录结构。也许你把js和css文件放错了文件夹。Flask希望它们位于特定的位置,除非您设置了
static\u folder
参数。此外,我建议查看有关使用Flask提供静态文件的官方文档,如下所示:。我不反对Youtube教程,但它们往往不会显示应用程序的完整细节。日志是否显示有人请求.js和.css文件?如果不是,问题在于模板中的HTML。@bernie否。我认为传递给url_的第一个属性是静态文件夹的名称