python fastapi 在页面以横向表格的形式显示一个数组,内容可以在线直接修改 含html和CSS
时间: 2024-09-29 16:09:05 浏览: 62
在Python FastAPI中,为了以横向表格形式显示数组并支持实时在线编辑,你可以结合HTML、CSS以及FastAPI的模板引擎如Jinja2。首先,你需要设置好FastAPI的路由,然后返回渲染后的HTML响应。以下是简单的步骤:
1. **安装依赖**:
确保已安装`fastapi`, `jinja2`, 和 `Uvicorn` (用于开发服务器)。如果尚未安装,可以在终端运行:
```bash
pip install fastapi jinja2 uvicorn
```
2. **创建FastAPI应用**:
创建一个名为`main.py`的文件,导入必要的库,并设置FastAPI应用:
```python
from fastapi import FastAPI, Request, Response
from fastapi.templating import Jinja2Templates
app = FastAPI()
templates = Jinja2Templates(directory="templates")
```
3. **创建HTML模板**:
在`templates`目录下创建一个名为`table.html`的文件,编写HTML结构并包含CSS样式:
```html
<!DOCTYPE html>
<html lang="en">
<head>
<style>
table {
border-collapse: collapse;
width: 100%;
}
th, td {
text-align: left;
padding: 8px;
border: 1px solid #ddd;
}
tr:nth-child(even){background-color: #f2f2f2;}
input[type=text] {
width: 100%;
box-sizing: border-box;
border: 2px solid #ccc;
border-radius: 4px;
padding: 16px;
}
</style>
</head>
<body>
<h2>Editable Table</h2>
<table id="editable-table">
{% for item in items %}
<tr>
<td><input type="text" value="{{ item['content'] }}"></td>
</tr>
{% endfor %}
</table>
</body>
</html>
```
这里假设`items`变量会在模板中传递给表的内容。
4. **处理数据和渲染模板**:
在FastAPI应用的某个路由中,填充数组数据并渲染模板:
```python
@app.get("/")
async def read_items():
# 假设有一个示例数组
items = [{'content': 'Item 1'}, {'content': 'Item 2'}, ...]
return templates.TemplateResponse("table.html", {"items": items})
```
5. **处理表单提交** (可选):
如果你想允许用户修改并在提交时更新数据库,需要添加额外的POST请求处理器,这超出了本题范围。不过,你可以使用JavaScript事件监听器和Ajax请求来实现。
现在,访问`http://localhost:8000/`,你会看到一个动态的、可编辑的横向表格。用户可以直接在表格单元格内输入,刷新页面不会丢失更改。
阅读全文