Introducción a Django REST Framework: desarrollo con ejemplos
Publicado: 2020-10-05Django 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'>×</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.