- Enrutamiento personalizado (método manual)
from django.conf.urls import url
from aplicacion import vistas
urlpatterns = [
url(r'^libros/$', vistas.VistaLibro.as_view()),
url(r'^libros/(?P<id>\d+)$', vista.DetalleLibro.as_view()),
]
class VistaLibro(APIView):
def get(self, request):
conjunto_libros = models.Libro.objects.all()
serializador = SerializadorLibro(conjunto_libros, many=True)
return Response(serializador.data)
def post(self, request):
# Insertar nuevo registro
print(request.data)
serializador = SerializadorLibro(data=request.data)
if serializador.is_valid():
serializador.save()
return Response(serializador.data)
else:
return Response(serializador.errors)
class DetalleLibro(APIView):
def get(self, request, id):
objeto_libro = models.Libro.objects.filter(id=id).first()
serializador = SerializadorLibro(objeto_libro, many=False)
return Response(serializador.data)
def put(self, request, id):
objeto_libro = models.Libro.objects.filter(id=id).first()
serializador = SerializadorLibro(data=request.data, instance=objeto_libro)
if serializador.is_valid():
serializador.save()
return Response(serializador.data)
else:
return Response(serializador.errors)
def delete(self, request, id):
models.Libro.objects.filter(id=id).delete()
return Response("")
- Enrutaimento semiautomático (vista que hereda de ModelViewSet)
from django.conf.urls import url
from aplicacion import vistas
urlpatterns = [
url(r'^editorial/$', vistas.VistaEditorial.as_view({'get':'list','post':'create'})),
url(r'^editorial/(?P<id>\d+)/$', vistas.VistaEditorial.as_view({'get':'retrieve','put':'update','delete':'destroy'})),
]
from rest_framework.viewsets import ModelViewSet
class VistaEditorial(ModelViewSet):
queryset = models.Editorial.objects.all()
serializer_class = SerializadorEditorial
- Enrutaimento automático (generación dinámica de rutas)
from django.conf.urls import url, include
from aplicacion import vistas
from rest_framework import routers
enrutador = routers.DefaultRouter()
enrutador.register('editorial', vistas.VistaEditorial)
urlpatterns = [
url(r'', include(enrutador.urls))
]
from rest_framework.viewsets import ModelViewSet
class VistaEditorial(ModelViewSet):
queryset = models.Editorial.objects.all()
serializer_class = SerializadorEditorial
Formas de acceder a los recuross:
http://127.0.0.1:8000/editorial/http://127.0.0.1:8000/editorial.jsonhttp://127.0.0.1:8000/editorial/3http://127.0.0.1:8000/editorial/3.json