from django.shortcuts import render, get_object_or_404 from django.http import HttpResponse, HttpResponseBadRequest from django.core.exceptions import ValidationError from members.models import Member import json def index(request, *args, **kwargs): return render(request, 'index.html',{}) def members(request, *args, **kwargs): mems = list(map(lambda m: m.get_dict(),Member.objects.all())) return HttpResponse(json.dumps(mems)) def member(request,*args, **kwargs): #get and put together since both operate on existing objects and return one object if request.method in ['GET','PUT']: # get object by id or give 404 idx = kwargs.pop("idx", None) try: mem = Member.objects.get(pk=idx) except Member.DoesNotExist: resp = HttpResponse('{"error":"object not found"}') resp.status_code = 404 return resp # update model if request type was PUT if request.method == 'PUT': try: data = json.loads(request.body.decode("utf-8")) mem.update_from_dict(data) except ValueError: return HttpResponseBadRequest('{"error" : "Invalid parameters supplied"}') return HttpResponse(json.dumps(mem.get_dict())) if request.method == 'POST': try: data = json.loads(request.body.decode("utf-8")) memdict = Member.create_from_dict(data) return HttpResponse(json.dumps(memdict)) except ValueError: return HttpResponseBadRequest('{"error" : "Invalid parameters supplied"}')