python - 使用 fastapi 和 jinja2 从 html 链接文件
问题描述
您好我正在尝试使用 fastapi 和 jinja2 从 html 代码链接到 json 文件,但链接不起作用。我想我必须告诉fastapi如何找到文件或类似的东西..我得到一个json(api)答案instad文件..
{"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>
解决方案
这段代码做到了..
Python:
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
第一个代码的导入和使用
推荐阅读
- elasticsearch - Elasticsearch,理解完成建议
- java - 如何在android studio中使用其他类的方法
- c++ - 模板模板推导给我一个通用引用的错误
- javascript - onClick() 不会触发 React-Native App 中的函数
- debugging - Visual Studio Code 1.14 - 已设置断点但尚未绑定
- angular - 在加载 UI 之前从 http 调用获取数据
- javascript - OpenTok users identification
- laravel - Get route by name in different namespace
- c# - 随机方程测试。正确或错误答案
- php - 在本地主机上测试入站电子邮件的正确方法