From ec44ff6f855559818bb3bb7f69ffa72f57b7ff82 Mon Sep 17 00:00:00 2001 From: JinHoooooou Date: Tue, 6 Jul 2021 13:42:22 +0900 Subject: [PATCH 1/4] add create_post method --- .../step2/jinho/djangogirls/blog/api/views.py | 33 +++++++++++-------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/django_girls_tutorial/step2/jinho/djangogirls/blog/api/views.py b/django_girls_tutorial/step2/jinho/djangogirls/blog/api/views.py index 015c98b..32c40b8 100644 --- a/django_girls_tutorial/step2/jinho/djangogirls/blog/api/views.py +++ b/django_girls_tutorial/step2/jinho/djangogirls/blog/api/views.py @@ -6,6 +6,7 @@ from django.utils import timezone from django.views.decorators.http import require_http_methods +from blog.form import PostForm from blog.models import Post @@ -56,19 +57,25 @@ def retrieve_post_detail(request, id): @require_http_methods(["POST"]) def create_post(request): - """ - 해당 view 함수를 구현하시오. - - Case 1: 성공하는 경우, - 상태코드 200 - - Case 2: 실패하는 경우, - author가 존재하지 않음 - 상태코드 404 - - 자세한 조건은 테스트를 확인해보고 파악하자 - - FYI, request.POST 활용 - """ + body = request.POST + try: + user = User.objects.get(id=body.get("author")) + except User.DoesNotExist: + return JsonResponse({"message": "author를 찾을 수 없습니다."}, status=NOT_FOUND) + form = PostForm(request.POST) + if form.is_valid(): + post = form.save(commit=False) + post.author = user + post.save() + return JsonResponse( + { + "post": + { + "title": post.title, + "text": post.text, + } + }, status=201) + return JsonResponse({"message:": "form is not valid"}, status=NOT_FOUND) @require_http_methods(["PUT"]) From 74b0685b9f435075e175a5f30eb2c3386f578560 Mon Sep 17 00:00:00 2001 From: JinHoooooou Date: Tue, 6 Jul 2021 13:42:41 +0900 Subject: [PATCH 2/4] add update_post_with_put method --- .../step2/jinho/djangogirls/blog/api/views.py | 37 ++++++++++++------- 1 file changed, 23 insertions(+), 14 deletions(-) diff --git a/django_girls_tutorial/step2/jinho/djangogirls/blog/api/views.py b/django_girls_tutorial/step2/jinho/djangogirls/blog/api/views.py index 32c40b8..3fbe0b9 100644 --- a/django_girls_tutorial/step2/jinho/djangogirls/blog/api/views.py +++ b/django_girls_tutorial/step2/jinho/djangogirls/blog/api/views.py @@ -80,17 +80,26 @@ def create_post(request): @require_http_methods(["PUT"]) def update_post_with_put(request, id): - """ - 해당 view 함수를 구현하시오. - - Case 1: 성공하는 경우, - 상태코드 200 - - Case 2: 실패하는 경우, - author가 존재하지 않음 - Case 3: 실패하는 경우, - post가 존재하지 않음 - 상태코드 404 - - 자세한 조건은 테스트를 확인해보고 파악하자 - - FYI, request.body 활용 - """ + body = json.loads(request.body) + try: + original_post = Post.objects.get(id=id) + except Post.DoesNotExist: + return JsonResponse({"message": "post를 찾을 수 없습니다."}, status=NOT_FOUND) + try: + user = User.objects.get(id=body["author"]) + except User.DoesNotExist: + return JsonResponse({"message": "author를 찾을 수 없습니다."}, status=NOT_FOUND) + form = PostForm(body, instance=original_post) + if form.is_valid(): + update_post = form.save(commit=False) + update_post.author = user + update_post.save() + return JsonResponse( + { + "post": + { + "title": update_post.title, + "text": update_post.text, + } + }, status=OK) + return JsonResponse({"message": "form is not valid"}, status=NOT_FOUND) From 58b032324ce6dd6dc623e18e43acb6438dd079e1 Mon Sep 17 00:00:00 2001 From: JinHoooooou Date: Sun, 11 Jul 2021 15:12:33 +0900 Subject: [PATCH 3/4] modify invalid form status NOT_FOUND to BAD_REQUEST --- .../step2/jinho/djangogirls/blog/api/views.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/django_girls_tutorial/step2/jinho/djangogirls/blog/api/views.py b/django_girls_tutorial/step2/jinho/djangogirls/blog/api/views.py index 3fbe0b9..60989c4 100644 --- a/django_girls_tutorial/step2/jinho/djangogirls/blog/api/views.py +++ b/django_girls_tutorial/step2/jinho/djangogirls/blog/api/views.py @@ -1,5 +1,5 @@ import json -from http.client import NOT_FOUND, OK +from http.client import NOT_FOUND, OK, BAD_REQUEST from django.contrib.auth.models import User from django.http import JsonResponse, QueryDict @@ -102,4 +102,4 @@ def update_post_with_put(request, id): "text": update_post.text, } }, status=OK) - return JsonResponse({"message": "form is not valid"}, status=NOT_FOUND) + return JsonResponse({"message": "form is not valid"}, status=BAD_REQUEST) From 9cd9f137f8f5c84ad57ec527c04c7d327c586b2c Mon Sep 17 00:00:00 2001 From: JinHoooooou Date: Sun, 11 Jul 2021 15:14:22 +0900 Subject: [PATCH 4/4] modify invalid form status NOT_FOUND to BAD_REQUEST --- django_girls_tutorial/step2/jinho/djangogirls/blog/api/views.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/django_girls_tutorial/step2/jinho/djangogirls/blog/api/views.py b/django_girls_tutorial/step2/jinho/djangogirls/blog/api/views.py index 60989c4..27660f6 100644 --- a/django_girls_tutorial/step2/jinho/djangogirls/blog/api/views.py +++ b/django_girls_tutorial/step2/jinho/djangogirls/blog/api/views.py @@ -75,7 +75,7 @@ def create_post(request): "text": post.text, } }, status=201) - return JsonResponse({"message:": "form is not valid"}, status=NOT_FOUND) + return JsonResponse({"message:": "form is not valid"}, status=BAD_REQUEST) @require_http_methods(["PUT"])