25 lines
		
	
	
		
			756 B
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			25 lines
		
	
	
		
			756 B
		
	
	
	
		
			Python
		
	
	
	
| from rest_framework.exceptions import ParseError
 | |
| import json
 | |
| from jinja2 import Template
 | |
| 
 | |
| forbidden_keywords = ["UPDATE", "DELETE", "DROP", "TRUNCATE"]
 | |
| 
 | |
| 
 | |
| def check_sql_safe(sql: str):
 | |
|     """检查sql安全性
 | |
|     """
 | |
|     sql_upper = sql.upper()
 | |
|     for kw in forbidden_keywords:
 | |
|         if kw in sql_upper:
 | |
|             raise ParseError('sql查询有风险')
 | |
|     return sql
 | |
| 
 | |
| def format_json_with_placeholders(json_str, **kwargs):
 | |
|     formatted_json = json_str
 | |
| 
 | |
|     # 遍历关键字参数,将占位符替换为对应的值
 | |
|     for key, value in kwargs.items():
 | |
|         formatted_json = formatted_json.replace("{" + key + "}", json.dumps(value))
 | |
| 
 | |
|     # 格式化后的字符串依然是 JSON 字符串,没有使用 json.loads()
 | |
|     return formatted_json |