From 990778854552c0347a9dfb1159608311cf41021d Mon Sep 17 00:00:00 2001 From: jrhong95 Date: Wed, 14 Jul 2021 23:41:30 +0900 Subject: [PATCH 1/2] sh-47 Add post list by drf --- setup.cfg | 2 +- v2/src/blog/admin.py | 6 ++++++ v2/src/blog/serializers.py | 9 +++++++++ v2/src/blog/urls.py | 7 +++++++ v2/src/blog/views.py | 13 +++++++++++++ v2/src/config/urls.py | 6 ++---- v2/src/manage.py | 2 +- 7 files changed, 39 insertions(+), 6 deletions(-) create mode 100644 v2/src/blog/serializers.py create mode 100644 v2/src/blog/urls.py diff --git a/setup.cfg b/setup.cfg index bc8f206..4f33e46 100644 --- a/setup.cfg +++ b/setup.cfg @@ -24,7 +24,7 @@ ignore_errors = True [tool:pytest] -DJANGO_SETTINGS_MODULE=src.config.settings.test +DJANGO_SETTINGS_MODULE = config.settings.base norecursedirs = .git __pycache__ migrations template addopts = -s filterwarnings = diff --git a/v2/src/blog/admin.py b/v2/src/blog/admin.py index e69de29..e1bf38e 100644 --- a/v2/src/blog/admin.py +++ b/v2/src/blog/admin.py @@ -0,0 +1,6 @@ +from django.contrib import admin + +from .models import Comment, Post + +admin.site.register(Post) +admin.site.register(Comment) diff --git a/v2/src/blog/serializers.py b/v2/src/blog/serializers.py new file mode 100644 index 0000000..3aaabe9 --- /dev/null +++ b/v2/src/blog/serializers.py @@ -0,0 +1,9 @@ +from rest_framework.serializers import ModelSerializer + +from .models import Post + + +class PostSerializer(ModelSerializer): + class Meta: + model = Post + fields = "__all__" diff --git a/v2/src/blog/urls.py b/v2/src/blog/urls.py new file mode 100644 index 0000000..9f9d059 --- /dev/null +++ b/v2/src/blog/urls.py @@ -0,0 +1,7 @@ +from django.urls import path + +from . import views + +urlpatterns = [ + path("posts/", views.PostListCreate.as_view(), name="retrieve_post_list"), +] diff --git a/v2/src/blog/views.py b/v2/src/blog/views.py index e69de29..f5964d6 100644 --- a/v2/src/blog/views.py +++ b/v2/src/blog/views.py @@ -0,0 +1,13 @@ +from django.utils import timezone +from rest_framework.response import Response +from rest_framework.views import APIView + +from .models import Post +from .serializers import PostSerializer + + +class PostListCreate(APIView): + def get(self, request): + posts = Post.objects.filter(published_date__lte=timezone.now()).order_by("published_date") + serializer = PostSerializer(posts, many=True) + return Response({"posts": serializer.data}) diff --git a/v2/src/config/urls.py b/v2/src/config/urls.py index 4295eb5..24a94a3 100644 --- a/v2/src/config/urls.py +++ b/v2/src/config/urls.py @@ -14,8 +14,6 @@ 2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) """ from django.contrib import admin -from django.urls import path +from django.urls import include, path -urlpatterns = [ - path("admin/", admin.site.urls), -] +urlpatterns = [path("admin/", admin.site.urls), path("api/", include("blog.urls"))] diff --git a/v2/src/manage.py b/v2/src/manage.py index d28672e..533f2d3 100755 --- a/v2/src/manage.py +++ b/v2/src/manage.py @@ -6,7 +6,7 @@ def main(): """Run administrative tasks.""" - os.environ.setdefault("DJANGO_SETTINGS_MODULE", "config.settings") + os.environ.setdefault("DJANGO_SETTINGS_MODULE", "config.settings.base") try: from django.core.management import execute_from_command_line except ImportError as exc: From 30b0990466854252535eaa45a14e83e9bbce714b Mon Sep 17 00:00:00 2001 From: jrhong95 Date: Thu, 15 Jul 2021 00:10:58 +0900 Subject: [PATCH 2/2] sh-47 update post-list api name --- v2/src/blog/urls.py | 2 +- v2/src/tests/post/test_post.py | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/v2/src/blog/urls.py b/v2/src/blog/urls.py index 9f9d059..00a92cd 100644 --- a/v2/src/blog/urls.py +++ b/v2/src/blog/urls.py @@ -3,5 +3,5 @@ from . import views urlpatterns = [ - path("posts/", views.PostListCreate.as_view(), name="retrieve_post_list"), + path("posts/", views.PostListCreate.as_view(), name="post_list_create"), ] diff --git a/v2/src/tests/post/test_post.py b/v2/src/tests/post/test_post.py index f74db64..6d555ad 100644 --- a/v2/src/tests/post/test_post.py +++ b/v2/src/tests/post/test_post.py @@ -27,14 +27,14 @@ def test_list_with_count(self): for i in range(10): post = self._create_post(author=self.author, title=f"test title-{i}", text=f"test text-{i}") post.publish() - response = self.client.get(reverse("retrieve_post_list")) + response = self.client.get(reverse("post_list_create")) response_data = json.loads(response.content)["posts"] self.assertEqual(len(response_data), 10) def test_list_with_published_post(self): post = self._create_post(author=self.author, title="test title", text="test text") post.publish() - response = self.client.get(reverse("retrieve_post_list")) + response = self.client.get(reverse("post_list_create")) response_data = json.loads(response.content)["posts"] self.assertEqual(response_data[0]["title"], "test title") self.assertEqual(response_data[0]["text"], "test text") @@ -42,6 +42,6 @@ def test_list_with_published_post(self): def test_list_with_no_published_post(self): self._create_post(author=self.author, title="test title", text="test text") - response = self.client.get(reverse("retrieve_post_list")) + response = self.client.get(reverse("post_list_create")) response_data = json.loads(response.content)["posts"] self.assertEqual(len(response_data), 0)