新增“数据编辑”

This commit is contained in:
2025-10-14 14:26:36 +08:00
parent 068e675fd1
commit 263b396142

34
app.py
View File

@@ -281,10 +281,10 @@ def show_all():
def edit_entry(doc_id): def edit_entry(doc_id):
""" """
渲染编辑页面 渲染编辑页面
参数: 参数:
doc_id (str): 要编辑的文档ID doc_id (str): 要编辑的文档ID
返回: 返回:
str: 渲染后的编辑页面或错误信息 str: 渲染后的编辑页面或错误信息
""" """
@@ -292,7 +292,7 @@ def edit_entry(doc_id):
document = get_by_id(doc_id) document = get_by_id(doc_id)
if not document: if not document:
return "文档不存在", 404 return "文档不存在", 404
# 保持原始数据格式不进行JSON转换 # 保持原始数据格式不进行JSON转换
# 直接传递包含data字段的原始文档 # 直接传递包含data字段的原始文档
return render_template('edit.html', document=document) return render_template('edit.html', document=document)
@@ -302,10 +302,10 @@ def edit_entry(doc_id):
def update_entry(doc_id): def update_entry(doc_id):
""" """
处理数据更新请求 处理数据更新请求
参数: 参数:
doc_id (str): 要更新的文档ID doc_id (str): 要更新的文档ID
返回: 返回:
重定向到所有数据页面或错误信息 重定向到所有数据页面或错误信息
""" """
@@ -313,40 +313,40 @@ def update_entry(doc_id):
original_doc = get_by_id(doc_id) original_doc = get_by_id(doc_id)
if not original_doc: if not original_doc:
return "文档不存在", 404 return "文档不存在", 404
# 从表单中获取所有字段数据 # 从表单中获取所有字段数据
data_parts = [] data_parts = []
i = 1 i = 1
while True: while True:
key_name = request.form.get(f'key_{i}') key_name = request.form.get(f'key_{i}')
field_value = request.form.get(f'field_{i}') field_value = request.form.get(f'field_{i}')
if not key_name or not field_value: if not key_name or not field_value:
break break
# 处理字段值(如果是列表格式,用|##|分隔) # 处理字段值(如果是列表格式,用|##|分隔)
if ',' in field_value: if ',' in field_value:
# 如果是逗号分隔的值,转换为列表格式 # 如果是逗号分隔的值,转换为列表格式
items = [item.strip() for item in field_value.split(',') if item.strip()] items = [item.strip() for item in field_value.split(',') if item.strip()]
if len(items) > 1: if len(items) > 1:
field_value = f"[{'|##|'.join(items)}]" field_value = f"[{'|##|'.join(items)}]"
data_parts.append(f"{key_name}:{field_value}") data_parts.append(f"{key_name}:{field_value}")
i += 1 i += 1
# 验证是否有数据 # 验证是否有数据
if not data_parts: if not data_parts:
return "没有可更新的数据", 400 return "没有可更新的数据", 400
# 构建新的数据字符串 # 构建新的数据字符串
data_value = "|###|".join(data_parts) data_value = "|###|".join(data_parts)
# 构造更新数据 # 构造更新数据
updated_data = { updated_data = {
'data': data_value, 'data': data_value,
'image': original_doc.get('image', '') # 保持原图片 'image': original_doc.get('image', '') # 保持原图片
} }
# 更新文档 # 更新文档
if update_by_id(doc_id, updated_data): if update_by_id(doc_id, updated_data):
return redirect(url_for('show_all')) return redirect(url_for('show_all'))
@@ -377,21 +377,21 @@ def delete_entry(doc_id):
def serve_image(filename): def serve_image(filename):
""" """
提供image目录下图片的访问服务 提供image目录下图片的访问服务
参数: 参数:
filename (str): 图片文件名 filename (str): 图片文件名
返回: 返回:
图片文件或404错误 图片文件或404错误
""" """
import os import os
from flask import send_from_directory from flask import send_from_directory
# 确保文件存在 # 确保文件存在
image_dir = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'image') image_dir = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'image')
if not os.path.exists(os.path.join(image_dir, filename)): if not os.path.exists(os.path.join(image_dir, filename)):
return "图片不存在", 404 return "图片不存在", 404
# 发送图片文件 # 发送图片文件
return send_from_directory(image_dir, filename) return send_from_directory(image_dir, filename)