我无法让烧瓶运行我的CSS和JS文件。它只是打开一个页面,其中所有图像都丢失了,所有的文本字段和按钮等到处都是。因此,我发现相关文件必须位于静态文件夹中,并且必须相应地调整路径,例如CSS Problems with Flask Web App或External 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文件可以正常工作。
您需要将子目录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
生成并正常工作。我猜想您可能在尝试解决此问题时一直在使用目录结构,所以我会仔细检查目录结构和代码是否正确
当您将html指向静态文件时,您必须提供静态目录根目录下的路径:
<link rel="stylesheet" media="all" href="{{ url_for('static', filename='css_image/asdf.css')}}">
话虽如此,这不是您唯一的问题,因为未找到某些具有正确路径的静态文件。
[创建应用程序时提供静态文件的路径会发生什么?即:]]
app = Flask(__name__,
static_folder='static',
template_folder='templates')