Skip to content

Instantly share code, notes, and snippets.

@Gpzim98
Last active November 17, 2017 15:35
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Gpzim98/0e9c2ef7b1e43360af4b7d8fcb08e0ec to your computer and use it in GitHub Desktop.
Save Gpzim98/0e9c2ef7b1e43360af4b7d8fcb08e0ec to your computer and use it in GitHub Desktop.
Django Rest Framework views best practices
# 1 - Ideal DRF View
from rest_framework import status
from rest_framework.decorators import detail_route
from rest_framework.response import Response
import logging
def do_log(e):
logger = logging.getLogger('django')
time = datetime.datetime.now()
logger.exception(time.strftime("%Y-%m-%d %H:%M:%S") + ' - ' + str(request.user))
@detail_route(methods=['post'])
def already_studied_here(self, request, pk=None):
try:
profile = Profile.objects.get(user=request.user)
school = School.objects.get(pk=200)
school.new_student(profile)
data = {'message': 'Student successfully enrolled'}
return Response(data, status=status.HTTP_200_OK)
except ValueError:
do_log(request.user)
data = {'message': 'There was an error during the process: '+str(e)}
return Response(data, status=status.HTTP_400_BAD_REQUEST)
except IntegrityError:
do_log(request.user)
data = {'message': 'There was an error during the process: ' + str(e)}
return Response(data, status=status.HTTP_400_BAD_REQUEST)
except Exception as e:
do_log(request.user)
data = {'message': 'There was an error during the process: ' + str(e)}
return Response(data, status=status.HTTP_400_BAD_REQUEST)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment