# in addfaq/views.py import sys import json import pandas as pd from rest_framework.views import APIView from rest_framework.response import Response from rest_framework import status from rest_framework import serializers from KMRobot import KMRobot
defdecode_unicode(obj): ''' 把字典中的 unicode 字符解码成正常字符 ''' ifisinstance(obj, str): returneval(repr(obj)) elifisinstance(obj, list): return [decode_unicode(item) for item in obj] elifisinstance(obj, dict): return {decode_unicode(k): decode_unicode(v) for k, v in obj.items()} return obj
classMySerializer(serializers.Serializer): '''数据验证''' token = serializers.CharField(max_length=100) data = serializers.JSONField()
defvalidate_name(self, value): if value != 'token': raise serializers.ValidationError("token is invalid!") return value
defvalidate_data(self, value): value = decode_unicode(value) try: df = pd.DataFrame(value) except Exception: raise serializers.ValidationError("Data must be a JSON object") cols = ["id", "category", "content", "answer", "keyword", "suggestsList"] iflist(df.columns) != cols: raise serializers.ValidationError( f"columns must be: {' '.join(cols)}") return df
This piece of writing is an original article, utilizing theCC BY-NC-SA 4.0Agreement. For complete reproduction, please acknowledge the source as Courtesy ofBlog of Shane Hu