我需要限制我编写的 API 以仅获取某些格式文件。我还需要将我的回复发送给杰森。 我将发送我的代码,我想我的问题在 serializing.py 但我无法理解当我发送 CSV 文件或 xls 或 xlsx 返回"错误的文件类型:文本/纯文本"时它在哪里,现在我的代码:
我的模型 :
from django.db import models
class File(models.Model):
file = models.FileField(blank=False, null=False)
remark = models.CharField(max_length=20)
timestamp = models.DateTimeField(auto_now_add=True)
我的观点:
# Create your views here.
from rest_framework.views import APIView
from rest_framework.parsers import MultiPartParser, FormParser
from rest_framework.response import Response
from rest_framework import status
from .serializers import FileSerializer
class FileView(APIView):
parser_classes = (MultiPartParser, FormParser)
def post(self, request, *args, **kwargs):
file_serializer = FileSerializer(data=request.data)
if file_serializer.is_valid():
file_serializer.save()
return Response(file_serializer.data, status=status.HTTP_201_CREATED)
else:
return Response(file_serializer.errors,status=status.HTTP_400_BAD_REQUEST)
和我的序列化程序:
class FileSerializer(serializers.ModelSerializer):
ALLOWED_TYPES = [
'text/csv',
'application/vnd.ms-excel',
'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
'application/json',
]
class Meta():
model = File
fields = '__all__'
def validate_file(self, value):
mime = magic.Magic(mime=True)
ftype = mime.from_buffer(value.file.read(1024))
if ftype not in self.ALLOWED_TYPES:
msg = 'Wrong file type: {}'.format(ftype)
raise serializers.ValidationError(msg)
value.file.seek()
return value
如果你帮我解决这个问题,我会感谢你 我的 Python 版本 = 3 和我的 Django 版本 = 2
我一直在使用这个库,它一直工作得很好。