Десериализация json как в ASP.Net MVC - Python
Формулировка задачи:
Всем доброго дня. Недавно только вот начал разбираться с Python и Django, до этого довольно тесно работал с ASP.Net MVC. Пытаюсь немного въехать в чём основные различия и облегчить себе жизнь. Собственно вопрос:
Если послать json в метод во view, можно ли как-то автоматически получить объект как это сделано например в том же ASP.Net MVC? Или нужно обязательно руками всегда доставать json и десериализовать его? То же хотелось бы узнать про отдельные параметры передаваемые например через GET, чтобы не дербанить каждый раз request объект, а видеть их сразу в параметрах.
Решение задачи: «Десериализация json как в ASP.Net MVC»
textual
Листинг программы
- from rest_framework.response import Response
- from rest_framework.views import APIView
- from rest_framework import status
- from django.shortcuts import get_object_or_404
- from django.http import HttpResponse
- from my_app.models import PostModel
- class PostCreate(APIView):
- # используется для POST-запросов
- def post(self, request, format=None):
- try:
- PostModel.objects.create(**request.DATA)
- except Exception as err:
- return Response({"detail": "Error create post", "message": err.message}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
- return Response({'detail': 'Success create'}, status=status.HTTP_201_CREATED)
- # Вариант с использованием json.loads
- def post_create(request):
- try:
- post_data = json.loads(request.body)
- except Exception as err:
- return HttpResponse(json.dumps({"detail": "Error load json data", "message": err.message}), status=500, content_type='application/json')
- try:
- PostModel.objects.create(**post_data)
- except Exception as err:
- return HttpResponse(json.dumps({"detail": "Error create post", "message": err.message}), status=500, content_type='application/json')
- return HttpResponse(json.dumps({'detail': 'Success create'}), status=201, content_type='application/json')
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д