Skip to content

Instantly share code, notes, and snippets.

@Kos
Last active April 24, 2021 18:22
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 Kos/a4b6bc142055b89363ab9663b2b172ff to your computer and use it in GitHub Desktop.
Save Kos/a4b6bc142055b89363ab9663b2b172ff to your computer and use it in GitHub Desktop.
def book_list(request: HttpRequest) -> HttpResponse:
if request.method == "GET":
books = Book.objects.filter(visible=True)
if "author" in request.GET:
books = books.filter(author__icontains=request.GET["author"])
if "title" in request.GET:
books = books.filter(title__icontains=request.GET["title"])
response_data = [book_to_json(book) for book in books]
return JsonResponse(response_data, safe=False)
elif request.method == "POST":
if request.content_type != "application/json":
return HttpResponse(status=HTTPStatus.UNSUPPORTED_MEDIA_TYPE)
request_data = json.loads(request.body)
book = book_from_json(request_data)
book.save()
return HttpResponse(status=HTTPStatus.CREATED)
else:
return HttpResponseNotAllowed(["GET", "POST"])
def book_detail(request: HttpRequest, isbn: str) -> HttpResponse:
books = Book.objects.filter(visible=True)
book = get_object_or_404(books, isbn=isbn)
response_data = book_to_json(book)
return JsonResponse(response_data)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment