Spaces:
Runtime error
Runtime error
File size: 1,325 Bytes
fed8648 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | from functools import wraps
from flask import jsonify, request
from decimal import Decimal, ROUND_HALF_UP, InvalidOperation, DecimalException
from datetime import datetime
def validate_json(*required_fields):
def decorator(f):
@wraps(f)
def decorated_function(*args, **kwargs):
if not request.is_json:
return jsonify({'message': 'Missing JSON in request'}), 400
data = request.get_json()
missing_fields = [field for field in required_fields if field not in data]
if missing_fields:
return jsonify({
'message': f'Missing required fields: {", ".join(missing_fields)}'
}), 400
return f(*args, **kwargs)
return decorated_function
return decorator
def validate_decimal(value):
"""验证并转换decimal类型的值"""
try:
if value is None:
return None
# 转换为Decimal并保留2位小数
return Decimal(str(value)).quantize(Decimal('0.01'), rounding=ROUND_HALF_UP)
except (TypeError, InvalidOperation, DecimalException):
return None
def validate_date(date_str):
try:
return datetime.strptime(date_str, '%Y-%m-%d').date()
except:
return None |