嗨,我试图链接到一个JSON文件的HTML代码使用的是法斯塔皮和金贾2,但链接不工作。我想我得告诉法斯塔皮怎么找到文件之类的。.我得到一个JSON(API)的答案输入文件。.

{"detail":"Not Found"}

巨蛇代码:

from fastapi import FastAPI, Form, Request
from fastapi.responses import HTMLResponse
from fastapi.templating import Jinja2Templates

app = FastAPI()

templates = Jinja2Templates(directory='templates')


@app.get('/data', response_class=HTMLResponse)
async def data(request: Request):
    return templates.TemplateResponse('data.html', {
        'request': request
    })

以及HTML:

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/semantic-ui@2.4.2/dist/semantic.min.css">
        <script src="https://cdn.jsdelivr.net/npm/semantic-ui@2.4.2/dist/semantic.min.js"></script>
        <title>Data</title>
    </head>
    <body>
        <div class="ui container">
            <h1>
                Data downloader:
            </h1>
            <a href="../json/data.json" target="_blank">
                Data
            </a>
        </div>

    </body>
</html>

密码成功了。.

巨蛇:

from fastapi import FastAPI, Form, Request
from fastapi.responses import HTMLResponse
from fastapi.templating import Jinja2Templates
from fastapi.staticfiles import StaticFiles
app = FastAPI()
app.mount("/json", StaticFiles(directory="json"), name="json")

templates = Jinja2Templates(directory='templates')


@app.get('/data', response_class=HTMLResponse)
async def data(request: Request):
    return templates.TemplateResponse('data.html', {
        'request': request
    })

HTML:

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/semantic-ui@2.4.2/dist/semantic.min.css">
        <script src="https://cdn.jsdelivr.net/npm/semantic-ui@2.4.2/dist/semantic.min.js"></script>
        <title>Data</title>
    </head>
    <body>
        <div class="ui container">
            <h1>
                Data downloader:
            </h1>
            <a href="{{ url_for('json', path='/data.json') }}" target="_blank">
                Data
            </a>
        </div>

    </body>
</html>

所以它的进口和使用StaticFiles 最早的密码


我敢打赌href 是错误的。如果这是一条路线,你不需要.. ,同样的情况data.json 文件在同一个文件夹里

@伊萨比号。..路径是正确的,在新选项卡中打开的URL是数据的路径。.如果我直接运行HTML而不使用法斯塔皮和乌维霍恩的效果。..所以一定是在法斯塔皮舱我漏了什么。.

尝试共享你的文件夹结构。法斯塔皮可能只服务某个文件夹,作为静态文件夹,其余的通过内部路由器传递它