Рубрики
Без рубрики

Создание спокойных API с Django без DjangorestFramework

Найти учебные пособия для Django на моем сайте, devnursury.com Часто при создании спокойных API с D … Теги с Python, Django.

Найти учебные пособия для Django на моем сайте, devNursery.com

Часто при совершении спокойного API с Джанго может показаться … “Как бы эта работа была?”

У Django есть много отличных аспектов к нему:

  • Модульность, создание кусочков вашего приложения в виде «приложений» позволяет вам повторно использовать и повторять функции, которые вы уже создали. (Пример, построить приложение AUTH AUTH, а затем просто повторно использовать его во всех будущих проектах)

  • Довольно прочный построенный набор функций аутентификации

Это все отлично, но при совершении микросистема или спокойного API Django может показаться немного неуклюжем (потому что его дизайн, по-видимому, действительно будет построен для обработки передней, так и в Backend, Full-Stage Framework).

Вот почему мы часто полагаемся на библиотеку DjangorestFrame для создания спокойных API и микросервисов с Django (или использовать альтернативы, такие как колба, Fastapi, Masonite и т. Д.)

Хотя, будучи любопытно, как я, я решил посмотреть, как бы он выглядел, как создать полный Crud RESTFLAY API с чистым Django и без вспомогательных библиотек. Ниже приведены результаты.

models.py

from django.db import models

class Todo(models.Model):
    item = models.CharField(max_length = 100)

views.py

from django.shortcuts import render
from django.http import JsonResponse
from themodels.models import Todo
from django.core import serializers
from django.views.decorators.csrf import csrf_exempt
import json

@csrf_exempt ## To exempt from default requirement for CSRF tokens to use postman
def TheModelView(request):

    if (request.method == "GET"):
        #Serialize the data into json
        data = serializers.serialize("json", Todo.objects.all())
        # Turn the JSON data into a dict and send as JSON response
        return JsonResponse(json.loads(data), safe=False)

    if (request.method == "POST"):
        # Turn the body into a dict
        body = json.loads(request.body.decode("utf-8"))
        #create the new item
        newrecord = Todo.objects.create(item=body['item'])
        # Turn the object to json to dict, put in array to avoid non-iterable error
        data = json.loads(serializers.serialize('json', [newrecord]))
        # send json response with new object
        return JsonResponse(data, safe=False)

@csrf_exempt ## To exempt from default requirement for CSRF tokens to use postman
def TheModelViewTwo(request, id):
        if (request.method == "PUT"):
        # Turn the body into a dict
            body = json.loads(request.body.decode("utf-8"))
        # update the item
            Todo.objects.filter(pk=id).update(item=body['item'])
            newrecord = Todo.objects.filter(pk=id)
        # Turn the object to json to dict, put in array to avoid non-iterable error
            data = json.loads(serializers.serialize('json', newrecord))
        # send json response with updated object
            return JsonResponse(data, safe=False)

        if (request.method == "DELETE"):
        # delete the item, get all remaining records for response
            Todo.objects.filter(pk=id).delete()
            newrecord = Todo.objects.all()
        # Turn the results to json to dict, put in array to avoid non-iterable error
            data = json.loads(serializers.serialize('json', newrecord))
        # send json response with updated object
            return JsonResponse(data, safe=False)

urls.py

from django.contrib import admin
from django.urls import path
from themodels.views import TheModelView, TheModelViewTwo

urlpatterns = [
    path('admin/', admin.site.urls),
    path('themodel/', TheModelView),
    path('themodel//', TheModelViewTwo)
]

Оригинал: “https://dev.to/alexmercedcoder/creating-a-restful-api-with-django-without-djangorestframework-17n7”