python fastapi html页面显示一行空白表格和行勾选项,页面有增加按钮,点击,页面增加一行空白表格,点击删除按钮,删除页面勾选的行,点击保存按钮,可以保存页面每一行表格的数据并发送给服务器
时间: 2024-10-02 20:04:27 浏览: 35
在Python FastAPI项目中,要创建这样的HTML页面功能,你可以使用Flask模板引擎(如Jinja2)配合FastAPI。首先,你需要安装必要的库:
```bash
pip install fastapi uvicorn jinja2
```
然后,你可以设置一个基本的路由,返回包含动态表格的HTML模板:
```python
from fastapi import FastAPI, Request
from fastapi.responses import HTMLResponse
from pydantic import BaseModel
app = FastAPI()
# 假设我们有一个简单的模型来存储表格数据
class TableData(BaseModel):
row_id: int
checkbox: bool
@app.get("/table")
async def table(request: Request):
data = [] # 初始数据,可以在这里从数据库获取
return HTMLResponse(content=render_template('table.html', data=data), status_code=200)
```
在`templates`文件夹下创建一个名为`table.html`的文件,内容如下:
```html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Dynamic Table</title>
</head>
<body>
<table id="dynamicTable">
{% for item in data %}
<tr>
<td><input type="checkbox" id="{{ loop.index }}" name="checkboxes[]"></td>
<td>{{ loop.index }}</td> <!-- 这里可以显示其他列 -->
</tr>
{% endfor %}
</table>
<button id="addRow">Add Row</button>
<button id="deleteSelected">Delete Selected</button>
<button id="saveChanges">Save Changes</button>
<script>
// JavaScript部分,这里可以使用jQuery或者其他库来操作DOM和处理事件
document.getElementById("addRow").addEventListener("click", function() {
// 添加新行...
});
document.getElementById("deleteSelected").addEventListener("click", function() {
// 验证勾选项,删除选定行...
});
document.getElementById("saveChanges").addEventListener("click", async function() {
const checkboxes = document.querySelectorAll('input[type="checkbox"]:checked');
const formData = new FormData();
checkboxes.forEach(function(checkbox) {
formData.append(`row_id_${checkbox.id}`, checkbox.checked ? 'true' : 'false');
});
await fetch('/submit_data', {
method: 'POST',
body: formData,
headers: { 'Content-Type': 'multipart/form-data' }
});
// 清空已选择项...
});
</script>
</body>
</html>
```
这个例子展示了如何渲染基础的HTML表格,并添加了按钮用于动态增删以及提交数据到服务器。你需要根据实际需求调整JavaScript部分,例如处理表单提交、验证等。
阅读全文