Skip to content

Latest commit

ย 

History

History
105 lines (70 loc) ยท 2.82 KB

File metadata and controls

105 lines (70 loc) ยท 2.82 KB

3์ฃผ์ฐจ - 4. generic CBV

Generic CBV ์ ์šฉํ•˜๊ธฐ

1. views.py ์ž‘์„ฑํ•˜๊ธฐ ์ „

์ด์ „๊ณผ ๋™์ผํ•œ ์ฝ”๋“œ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ƒ๋žตํ•ฉ๋‹ˆ๋‹ค.

  1. django-admin startproject <project-name>
  2. cd <project-name>
  3. python manage.py startapp <app-name>
  4. settings.py์— App, rest_framework์ถ”๊ฐ€
  5. models.py์— ๋ชจ๋ธ ์ž‘์„ฑ ๋ฐ migrate
  6. serializer.py์ƒ์„ฑ ๋ฐ ์ž‘์„ฑ

2. views.py ์ž‘์„ฑํ•˜๊ธฐ

1) ํ•„์š”ํ•œ ๋ชจ๋“ˆ ์ถ”๊ฐ€ํ•˜๊ธฐ

์‚ฌ์šฉํ•  ๋ชจ๋ธ, serializer, rest_framework์˜ generics๋ฅผ ์ถ”๊ฐ€

from .models import Post
from .serializer import PostSerializer
from rest_framework import generics
2) PostList ํด๋ž˜์Šค ์ž‘์„ฑํ•˜๊ธฐ

generics์˜ ListCreateAPIView๋Š” mixins์—์„œ ์‚ฌ์šฉํ•œ
listํ•จ์ˆ˜์™€ createํ•จ์ˆ˜๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” Class๋‹ค.

class PostList(generics.ListCreateAPIView):
    queryset = Post.objects.all()
    serializer_class = PostSerializer
3) PostDetail ํด๋ž˜์Šค ์ž‘์„ฑํ•˜๊ธฐ

generics์˜ RetrieveUpdateDestroyAPIView ๋˜ํ•œ
mixins์—์„œ ์‚ฌ์šฉํ•œ ํ•จ์ˆ˜๋“ค๊ณผ ๋™์ผํ•œ ๊ธฐ๋Šฅ์„ ํ•œ๋‹ค.

class PostDetail(generics.RetrieveUpdateDestroyAPIView):
    queryset = Post.objects.all()
    serializer_class = PostSerializer

3. urls.py ์ž‘์„ฑํ•˜๊ธฐ

์ด์ „๊ณผ ๋™์ผํ•˜๊ฒŒ ์•ฑ ๋‚ด๋ถ€์— urls.py ์ƒ์„ฑ ๋ฐ ์ž‘์„ฑ

from django.urls import path
from rest_framework.urlpatterns import format_suffix_patterns
from . import views

urlpatterns = [
    path("post", views.PostList.as_view()),
    path("post/<int:pk>", views.PostDetail.as_view()),
]

urlpatterns = format_suffix_patterns(urlpatterns)

ํ”„๋กœ์ ํŠธ ํด๋” ๋‚ด๋ถ€์˜ urls.py์— include

from django.contrib import admin
from django.urls import path, include
import post.urls

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include(post.urls)),
]

์‹คํ–‰ ๊ฒฐ๊ณผ

http://127.0.0.1:8000/post๋กœ ์ ‘์†ํ•˜๋ฉด ์ž˜ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.


httpie๋กœ ํ…Œ์ŠคํŠธ ํ•˜๊ธฐ

๋ชจ๋“  ๊ธฐ๋Šฅ๋“ค์ด ์ด์ „๊ณผ ๊ฐ™์ด ๋™์ž‘ํ•œ๋‹ค.

  • PostListํด๋ž˜์Šค POST๋งค์„œ๋“œ ํ…Œ์ŠคํŠธ


  • PostListํด๋ž˜์Šค GET๋งค์„œ๋“œ ํ…Œ์ŠคํŠธ


  • PostDetailํด๋ž˜์Šค GET๋งค์„œ๋“œ ํ…Œ์ŠคํŠธ


  • PostDetailํด๋ž˜์Šค PUT๋งค์„œ๋“œ ํ…Œ์ŠคํŠธ


  • PostDetailํด๋ž˜์Šค DELETE๋งค์„œ๋“œ ํ…Œ์ŠคํŠธ