Django rest api csv в json
Я хотел бы создать django rest api, который получает файл csv и затем отвечает на него в формате json. Как мне этого добиться без использования моделей и всего, что связано с базами данных? Я не хочу использовать базу данных, потому что предполагается, что файлы csv будут иметь разную структуру каждый раз
Это мой первый проект django и я видел много туториалов, даже я сделал первый туториал с сайта django, но я не могу понять, как сделать эту задачу без базы данных. Спасибо!
поскольку вы не пробовали ничего сделать самостоятельно Вот как вы можете это сделать
views.py
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):
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 и вызовите класс view таким образом
urlpatterns = [
path("read-csv",views.ReadCSVView.as_view(),name="csv")]
надеюсь, это прояснит ваши сомнения