python fastapi 构建一个html文件,请求时,列表显示服务端发来的文件夹下文件清单,并提供点击删除功能
时间: 2024-09-19 09:17:40 浏览: 54
用Python批量把文件复制到另一个文件夹的实现方法
5星 · 资源好评率100%
在Python中,你可以使用FastAPI框架搭配HTML模板引擎(如Jinja2)来创建一个动态网页应用,展示服务器上特定文件夹的文件列表,并允许用户通过点击删除。以下是简要步骤:
1. 安装所需库:
- 安装FastAPI:`pip install fastapi`
- 安装Jinja2:`pip install jinja2`
- 可选:如果你需要处理文件系统操作,安装`python-multipart`以支持文件上传:`pip install python-multipart`
2. 配置FastAPI应用程序并设置路由:
```python
from fastapi import FastAPI, File, UploadFile
from fastapi.responses import HTMLResponse
from jinja2 import Template
app = FastAPI()
@app.get("/files/")
async def get_files():
# 假设我们有一个名为"file_dir"的目录
file_dir = "path_to_your_directory"
files = os.listdir(file_dir) # 使用os模块获取文件列表
return {"files": files}
```
3. 创建HTML模板(例如:templates/index.html):
```html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Files</title>
</head>
<body>
<h1>Server Files</h1>
<ul id="file-list">
{% for file in files %}
<li><a href="#" onclick="deleteFile('{{ file }}')">{{ file }}</a></li>
{% endfor %}
</ul>
<script>
function deleteFile(filename) {
// 这里只是示例,实际需要发送POST请求到服务器进行文件删除
fetch('/delete-file', {
method: 'DELETE',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ filename: filename })
}).then(response => {
if (response.ok) {
alert('File deleted!');
} else {
alert('Error deleting file.');
}
});
}
</script>
</body>
</html>
```
4. 模板渲染和文件删除处理:
```python
@app.delete("/delete-file")
async def delete_file(request: Request):
data = await request.json()
filename = data["filename"]
# 实际删除文件操作,这里只是一个占位符
# server_side_delete_file(os.path.join(file_dir, filename))
return {"message": f"Deleting '{filename}'..."}
```
5. 使用`HTMLResponse`返回渲染后的HTML页面:
```python
@app.get("/")
async def root():
template = Template(open("templates/index.html", "r").read())
context = await get_files() # 获取文件列表数据
rendered_content = template.render(files=context["files"])
return HTMLResponse(content=rendered_content)
```
现在,当你访问`http://localhost:8000/`时,将会看到一个文件列表。点击文件名会触发删除操作,但请注意这个例子中的删除函数只是一个简单的示例,实际操作需要连接到服务器并在服务器端进行。
阅读全文