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

Оцени полезность:

7   голосов , оценка 4.143 из 5