3

我有一个简单的 FastAPI 应用程序,它像这样提供test.html文件app/main.py

@app.get('/')
def index():
  return FileResponse('static/test.html')

目录结构是这样的:

app/main.py
app/static/test.html

我可以更改此操作以使其与修改后的目录结构一起使用,app/并且static/是兄弟姐妹吗?

我已经尝试过return FileResponse('../static/test.html'),但到目前为止还没有奏效;产生的错误是“RuntimeError:路径 ../static/test.html 中的文件不存在。”

4

2 回答 2

1

如果您的“静态”目录与您的 main.py 位于同一目录中,请
尝试:

return FileResponse('./static/test.txt')

看起来您正在查看上面的文件夹。

你可以 os.path 来获取父目录

import os 
parent_dir_path = os.path.dirname(os.path.realpath(__file__))

@app.get('/')
def index():
  return FileResponse(parent_dir_path + '/static/test.html')
于 2020-01-20T16:02:21.003 回答
0

我的建议:那么你有静态安装。

import os
script_dir = os.path.dirname(__file__)
st_abs_file_path = os.path.join(script_dir, "static/")
app.mount("/static", StaticFiles(directory=st_abs_file_path), name="static")

或不使用:

return FileResponse(st_abs_file_path + 'test.html')

更多解释在这里:https ://stackoverflow.com/a/69401919/5824889

于 2021-10-01T07:59:47.347 回答