如何获取CSV文件和Excel格式(XLS XLSX,.)使用 Django Rest 框架



我需要限制我编写的 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

我一直在使用这个库,它一直工作得很好。

最新更新