Десериализация 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')