如何让flask识别静态文件夹中的css和js文件?

问题描述 投票:1回答:2

我无法让烧瓶运行我的CSS和JS文件。它只是打开一个页面,其中所有图像都丢失了,所有的文本字段和按钮等到处都是。因此,我发现相关文件必须位于静态文件夹中,并且必须相应地调整路径,例如CSS Problems with Flask Web AppExternal JavaScript file is not getting added when running on Flask。我实现了这一点。但这并没有真正的帮助。显然,这是一个普遍的问题。我已经尝试了其他一些建议/解决方案,主要集中在snytax和括号等方面,这里关于stackoverflow,但没有帮助。所以我的文件夹结构是这样的:

  /myproject
      /static
         /css_image
            script.js
            img1.png
            asdf.css
      /templates
         index.html

这里是上述路径的HTML代码中的几行:

<link rel="stylesheet" media="all" href="{{ url_for('static', filename='css_image/asdf.css')}}">
<link rel="apple-touch-icon" sizes="57x57" href="{{ url_for('static', filename='css_image/img1.png')}}">
<script  src="{{ url_for('static', filename='css_image/script.js')}}" data-turbolinks-track="reload"></script>

我的python烧瓶代码看起来像这样:

from flask import Flask, url_for, render_template

app = Flask(__name__)


@app.route('/')
def index():
    return render_template("index.html")

if __name__ == '__main__':
    app.run()

运行烧瓶后,我在输出中得到以下内容:

127.0.0.1 - - [07/Oct/2019 14:10:06] "GET / HTTP/1.1" 200 -
127.0.0.1 - - [07/Oct/2019 14:10:06] "GET /css_image/img1.png HTTP/1.1" 404 -
127.0.0.1 - - [07/Oct/2019 14:10:06] "GET /static/css_image/asdf.css HTTP/1.1" 404 -
127.0.0.1 - - [07/Oct/2019 14:10:06] "GET /static/css_image/script.js HTTP/1.1" 404 -

我还应该添加,当我通过单击该文件直接打开它时,该html文件可以正常工作。

javascript python html css flask
2个回答
0
投票

您需要将子目录css_image添加到模板中filename函数的url_for自变量:

{{ url_for('static', filename='css_image/script.js')}}

附带说明:您似乎已经在模板示例的第二行完成了此操作:

<link rel="apple-touch-icon" sizes="57x57" href="{{ url_for('static', filename='css_image/img1.png')}}">

但是控制台中的相应行看起来像这样:

127.0.0.1 - - [07/Oct/2019 14:10:06] "GET /css_image/img1.png HTTP/1.1" 404 -

此路径应已作为/static/css_image/img1.png生成并正常工作。我猜想您可能在尝试解决此问题时一直在使用目录结构,所以我会仔细检查目录结构和代码是否正确


0
投票

当您将html指向静态文件时,您必须提供静态目录根目录下的路径:

<link rel="stylesheet" media="all" href="{{ url_for('static', filename='css_image/asdf.css')}}">

话虽如此,这不是您唯一的问题,因为未找到某些具有正确路径的静态文件。

[创建应用程序时提供静态文件的路径会发生什么?即:]]

app = Flask(__name__,
            static_folder='static',
            template_folder='templates')
© www.soinside.com 2019 - 2024. All rights reserved.