使用 fastapi 和 jinja2

问题描述

您好,我正在尝试使用 fastapi 和 jinja2 从 html 代码链接到 json 文件,但链接无效。我想我必须告诉 fastapi 如何找到文件或类似的东西..我得到了文件的 json (api) 答案..

{"detail":"Not Found"}

python代码:

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

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...