Django休息API csv到json

kkbh8khc  于 2022-12-24  发布在  Go
关注(0)|答案(1)|浏览(145)

我想创建一个API来接收csv文件,然后以json格式响应该文件。我如何在不使用模型和任何与数据库相关的东西的情况下实现这一点?我不想使用数据库,因为它假设csv文件每次都会有不同的结构
这是我的第一个django项目,我已经看了很多教程,甚至我做了django网站上的第一个教程,但我不明白如何做这个任务没有数据库。谢谢!

jm81lzqq

jm81lzqq1#

既然你还没有尝试过任何东西对你自己这里是你可以怎么做
第一个月

from rest_franework.generics import CreateAPIView
    class ReadCSVView(CreateAPIView):
        # permission_classes = [IsAuthenticated]
        serializer_class = ReadCSVSerializer
        queryset = ''
    
        def perform_create(self, serializer):
            file = serializer.validated_data['file']
            decoded_file = file.read().decode()
            io_string = io.StringIO(decoded_file)
            reader = csv.reader(io_string)
            next(reader) # incase you want to skip first row else remove this 
            return reader
    
        def create(self, request, *args, **kwargs):
            serializer = self.get_serializer(data=request.data)
            serializer.is_valid(raise_exception=True)
            final_data = []
            for row in self.perform_create(serializer):
                    if row[0]=="jack":
                          #do your logic here
                        final_data.append(row)
            return Response(final_data, status=status.HTTP_201_CREATED)

只需创建一个序列化程序来读取csv.serializers.py

from rest_framework import serializers
class ReadCSVSerializer(serializers.Serializer):
    file = serializers.FileField()

现在转到您的urls.py并按以下方式调用视图类

urlpatterns = [
    path("read-csv",views.ReadCSVView.as_view(),name="csv")]

我希望这能澄清你的疑虑

相关问题