gpt4 book ai didi

python - 使用flask渲染html找不到文件

转载 作者:行者123 更新时间:2023-12-01 06:34:16 24 4
gpt4 key购买 nike

我对使用 Flask 还很陌生,有一个基本问题:如何提供对使用 Flask 访问静态文件(例如图像)而呈现的 HTML 的访问。这是我的玩具示例:

我想在网站上渲染 logo.svg。该项目的结构为

Project 
|
+ -- static
|
+ -- logo.svg
+ -- templates
|
+ -- test.html
+ -- run_flask.py

test.html 如下所示

<!DOCTYPE>

<html>

<head>

<title>demo</title>

<style>
body {
font-family: helvetica neue, helvetica, liberation sans, arial, sans-serif;
font-size: 14px;
}

</style>
</head>

<body>
<img src="./static/logo.svg" id="logo">
</body>

</html>

我的 run_flask-py 脚本包含:

import flask
from flask import render_template, send_from_directory
from flask_cors import CORS

app = flask.Flask(__name__, static_url_path='')
CORS(app)
app.config["DEBUG"] = True

@app.route('/<string:page_name>/')
def render_static(page_name):
return render_template('%s.html' % page_name)

app.run(port=5001)

现在运行脚本时,控制台输出为:

Running on http://127.0.0.1:5001/ (Press CTRL+C to quit)

到目前为止一切顺利,但在 Chrome 中,http://127.0.0.1:5001/test/看起来像:

enter image description here

我已经看过 How to serve static files in Flask因为问题听起来很相似。但我实际上对建议的 send_from_directory 如何在这里帮助我感到困惑。

有人可以帮忙吗?

最佳答案

初始化应用程序时,您应该删除 static_url_path 参数:

app = flask.Flask(__name__)

默认情况下,flask 将在子目录 static/ 中查找任何静态文件。您的目录结构满足此要求。

正如 @roganjosh 评论的那样,这应该在模板中起作用:

<img src="{{ url_for('static', filename='logo.svg') }}" id="logo">

作为调试步骤,您可以在浏览器中加载 http://127.0.0.1:5001/static/logo.svg,这应该可以正确显示。

<小时/>

更新:重新。评论

So I guess an empty string defaults to the current app directory or would you need / for that

调查实际情况总是好的 source code :

:param static_url_path: can be used to specify a different path for the
static files on the web. Defaults to the name
of the `static_folder` folder.
:param static_folder: the folder with static files that should be served
at `static_url_path`. Defaults to the ``'static'``
folder in the root path of the application.

您可能正在寻找的是控制基于服务器的目录的static_folderstatic_url_path 影响前端可用静态文件的 URL 路径。

坚持使用默认值而不定义任何一个肯定更容易。

关于python - 使用flask渲染html找不到文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59752789/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com