新增“数据编辑”
This commit is contained in:
		
							
								
								
									
										34
									
								
								app.py
									
									
									
									
									
								
							
							
						
						
									
										34
									
								
								app.py
									
									
									
									
									
								
							@@ -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)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user