Introducción a Django REST Framework: desarrollo con ejemplos

Publicado: 2020-10-05

Django REST Framework se distribuye ampliamente como un paquete estándar de Python que los usuarios pueden necesitar para comenzar a desarrollar API RESTful. Es sofisticado, poderoso, sorprendentemente fácil de usar y ofrece una versión atractiva y navegable para las API. Django REST Framework proporciona la opción de devolver objetos JSON. Este marco ofrece una potente serialización del modelo y muestra los datos utilizando vistas básicas basadas en funciones en un visor completamente REST. Conozca más sobre el marco Django REST a continuación:

Tabla de contenido

¿Qué es el marco REST de Django?

Django REST Framework es un kit de herramientas flexible y sólido que facilita a los desarrolladores la creación de API web. También ofrece serializadores y vistas generalizadas basadas en clases para la API. Al ser un código fuente, se abrevia como DRF, que representa una biblioteca de Python para desarrollar interfaces de programación de aplicaciones web. Como en este artículo, estamos hablando de API de desarrollo con instrucciones paso a paso.

Pero antes de comenzar con la guía, es importante comprender por qué el marco es incluso importante. Muchos marcos disponibles permiten a los desarrolladores crear API para sus aplicaciones de bloques fácilmente, pero se prefiere el marco Django REST. Este marco es conveniente de usar de varias maneras y ofrece las ventajas mencionadas a continuación:

  • Ofrece a los navegadores web una interfaz de programación de aplicaciones capaz, que es una gran victoria para los desarrolladores.
  • Tiene políticas de autenticación que incluyen los paquetes para OAuth1, OAuth2, etc.
  • el procesador de serialización que contiene es compatible con las fuentes de datos ORM y no ORM
  • este marco tiene una extensa documentación y ofrece un gran apoyo a la comunidad
  • Las grandes plataformas lo utilizan y confían en él, como Mozilla, Heroku, RedHat, etc.

Leer: Aplicaciones Django: todo lo que necesita saber sobre

Establecer el desarrollo del marco Django REST

Para empezar, debe instalar las dependencias de Python para el sistema operativo. Si está utilizando la plataforma Windows, puede instalar fácilmente la plataforma Linux como su sistema operativo secundario con una caja virtual o un comando manual. Para continuar con el marco, puede usar herramientas de administración de Python efectivas y convenientes.

La mayoría de las herramientas son un ayudante de acceso. Permiten a los desarrolladores cambiar las versiones de Python rápidamente, establecer versiones específicas del proyecto, administrar el entorno virtual e instalar varias versiones en el sistema. Si está utilizando sistemas operativos Linux o Mac, sería fácil instalarlo.

Con la ayuda del framework Django REST , podemos convertir una aplicación no RESTful en una RESTful. Esto incluye los procedimientos mencionados a continuación:

Configuración DRF

Para la configuración de DRF, debe instalar-

Cascarón

$ pip instalar djangorestframework

$ pip congelar > requisitos.txt

Actualizar configuración: py:

Pitón

APLICACIONES_INSTALADAS = (

'django.contrib.admin',

'django.contrib.auth',

'django.contrib.contenttypes',

'django.contrib.sessions',

'django.contrib.messages',

'django.contrib.archivos estáticos',

'hablar',

'marco_resto'

)

Estructura RESTful

En un desarrollo de API RESTful, los puntos finales representan su estructura y acceso de usuario desde la aplicación con la ayuda de métodos como GET, PUT, POST, DELETE. Estos puntos finales se organizan lógicamente en torno al elemento y las colecciones, los cuales se cuentan como recursos. Si hay un solo recurso, los enlaces correspondientes se utilizarán como URL para elementos y colecciones.

OBTENER

CORREO

PONER

ELIMINAR

/publicaciones/

Mostrar todas las publicaciones

Agregar nueva publicación

Actualizar todas las publicaciones

Eliminar todas las publicaciones

/publicaciones/<id>

Mostrar <id>

N / A

Actualizar <id>

Eliminar identificación

Serializadores y vistas

El bloque de construcción principal del marco REST de Django son los serializadores, y se utilizan para elaborar la representación de varios registros de datos basados ​​en los modelos de Django. Los serializadores son la clase estándar de Python que puede heredar el comportamiento del modelo del marco.

Dentro de la clase de serializadores, existen conjuntos de campos separados que utilizan tipos de datos de su paquete del mismo marco. También notaron las similitudes entre el marco y las clases. Las clases de serializador por sí solas no piensan y están integradas con vistas que administran la mayor parte de la lógica del servicio REST. Además, utiliza las clases de serializador para transformar los datos. Por ejemplo, un método de vista regular de Django es-

de coffeehouse.stores.models import Store

de coffeehouse.stores.serializers importar StoreSerializer

desde rest_framework.decorators importar api_view

de rest_framework.response importar Respuesta

@api_view(['OBTENER','POST','ELIMINAR'])

def rest_store(solicitud):

if solicitud.método == 'OBTENER':

tiendas = Tienda.objetos.todos()

serializador = StoreSerializer(tiendas, muchos=Verdadero)

respuesta de retorno (serializador.datos)

elif solicitud.método == 'POST':

… #logic para la operación HTTP POST

elif solicitud.método == 'ELIMINAR':

… #logic para la operación HTTP DELETE

Vistas basadas en clases

Con la ayuda de vistas basadas en clases, el marco REST de Django brinda acceso a las funciones supremas y complejas de los usuarios. Las vistas basadas en clases ofrecen las funciones de las verdaderas clases de Python y permiten que las vistas de Django operen fácilmente con la ayuda de los principios de programación orientada a objetos que conducen a una mayor reutilización junto con tiempos de implementación cortos.

Las vistas basadas en clases de Django resaltan un enfoque poderoso para construir vistas de Django, y también son una alternativa a los métodos que se usan para construir API. Para desarrollar una vista basada en clases, es importante crear una clase que pueda heredar de una de las otras clases. Por ejemplo:

# vistas.py

de Django.views.generic import TemplateView

clase AboutIndex(TemplateView):

nombre_plantilla = 'index.html'

def get_context_data(self, **kwargs):

# **kwargs contiene valores de inicialización de contexto de palabra clave (si los hay)

# Implementación de la base de llamadas para obtener un contexto

context = super(AboutIndex, self).get_context_data(**kwargs)

# Agregue datos de contexto para pasar a la plantilla

context['aboutdata'] = 'Datos personalizados'

contexto de retorno

# urls.py

de coffeehouse.about.views importar AboutIndex

desde la ruta de importación django.urls

patrones de URL = [

ruta('acerca de/índice/',AcercaDeIndex.as_view(),{'a la venta':True}),

Checkout: Las 12 mejores preguntas y respuestas de entrevistas de Django para principiantes

Actualizar vistas

Para adaptarse a la estructura de la aplicación RESTful, es importante refactorizar las vistas actuales. Puede comentar estas vistas y agregarlas como-

Pitón

desde django.shortcuts importación render

de django.http importar HttpResponse

desde rest_framework.decorators importar api_view

de rest_framework.response importar Respuesta

de la publicación de importación de talk.models

de talk.serializers importar PostSerializer

desde talk.forms importar PostForm

def casa (solicitud):

tmpl_vars = {'formulario': PostForm()}

volver render (solicitud, 'hablar/index.html', tmpl_vars)

@api_view(['OBTENER'])

def post_colección(solicitud):

if solicitud.método == 'OBTENER':

publicaciones = Publicar.objetos.todos()

serializador = PostSerializer(publicaciones, muchos=Verdadero)

respuesta de retorno (serializador.datos)

@api_view(['OBTENER'])

def post_element(solicitud, paquete):

tratar:

publicación = publicación.objetos.get(pk=pk)

excepto Post.DoesNotExist:

devolver HttpResponse (estado = 404)

if solicitud.método == 'OBTENER':

serializador = PostSerializer(post)

respuesta de retorno (serializador.datos)

Explicación

  • En las instrucciones que se dan arriba, el decorador @api_view analiza la solicitud HTTP correspondiente, que se pasa a la función de vista.
  • Ahora la vista usa una sola publicación si es para un elemento o toma todos los datos si es para la colección.
  • Finalmente, los datos ahora se serializan en JSON y se devuelven en consecuencia.

API navegable por la web o URL actualizada

Algunas URL actualizadas para Python son:

# Direcciones URL de conversación

desde patrones de importación django.conf.urls, URL

urlpatrones = patrones(

'hablar.vistas',

url(r'^$', 'inicio'),

# API

url(r'^api/v1/mensajes/$', 'post_colección'),

url(r'^api/v1/publicaciones/(?P<pk>[0-9]+)$', 'post_element')

)

Refactorización para la integración de la API RESTful

Incluye los principales métodos HTTP como:

OBTENER

Carga de la página inicial, es importante mostrar las publicaciones y, para hacerlo, puede agregar esta solicitud:

cargar_mensajes()

// Cargar todas las publicaciones al cargar la página

función cargar_mensajes() {

$.ajax({

url: “api/v1/posts/”, // el punto final

escriba: "GET", // método http

// manejar una respuesta exitosa

éxito: función (json) {

for (var i = 0; i < json.longitud; i++) {

consola.log(json[i])

$(“#talk”).prepend(“<li id='post-“+json[i].id+”'><strong>”+json[i].text+”</strong> – <em> “ +json[i].autor+”</em> – <span> “+json[i].creado+

“</span> – <a id='delete-post-“+json[i].id+”'>eliminarme</a></li>”);

}

},

// manejar una respuesta no exitosa

error: función (xhr, errmsg, err) {

$('#results').html(“<div class='alert-box radio de alerta' data-alert>¡Vaya! Hemos encontrado un error: “+errmsg+

” <a href='#' class='close'>&times;</a></div>”); // agrega el error al dom

console.log(xhr.status + “:” + xhr.responseText); // proporcionar un poco más de información sobre el error a la consola

}

});

};

CORREO

Las solicitudes POST se administran de manera similar y puede probar esto actualizando las vistas. Puedes actualizar la función post_collection() en views.py:

@api_view(['OBTENER', 'POST'])

def post_colección(solicitud):

if solicitud.método == 'OBTENER':

publicaciones = Publicar.objetos.todos()

serializador = PostSerializer(publicaciones, muchos=Verdadero)

respuesta de retorno (serializador.datos)

elif solicitud.método == 'POST':

datos = {'texto': solicitud.DATA.get('la_publicación'), 'autor': solicitud.usuario.pk}

serializador = PostSerializer(datos=datos)

si serializador.is_valid():

serializador.guardar()

Respuesta de retorno (serializador.datos, estado=estado.HTTP_201_CREATED)

Respuesta de retorno (serializador.errores, estado=estado.HTTP_400_BAD_REQUEST)

Lea también: Salario de desarrollador de Django en India

La línea de fondo

La parte REST del marco Django REST real es bastante simple y todo lo que tiene que hacer es actualizar la función del elemento de publicación para manejar la solicitud. Si aún tiene alguna consulta, hay una serie de marcos y recursos REST de Django para la improvisación.

Si está interesado en obtener más información sobre Django y otros lenguajes y herramientas de desarrollo de pila completa, consulte el Diploma PG de upGrad & IIIT-B en desarrollo de software de pila completa, que está diseñado para profesionales que trabajan y ofrece más de 500 horas de formación rigurosa. Más de 9 proyectos y asignaciones, estado de exalumno de IIIT-B, proyectos finales prácticos prácticos y asistencia laboral con las mejores empresas.

Prepárate para una carrera del futuro

UPGRAD Y DIPLOMA PG DE IIIT-BANGALORE EN DESARROLLO DE SOFTWARE FULL STACK
Inscríbase hoy