[Django] - 6. GET, POST 사용하기

최창우·2022년 9월 13일
0

Django

목록 보기
6/10

📜 request 메서드 사용하기

📕 '함수형 view' vs '클래스형 view'

장고의 뷰는 크게 함수형 뷰와 클래스형 뷰로 나뉜다.
처음에 장고는 함수형 뷰만 제공했는데 동일한 코드를 사용하지 않도록 템플릿화하여 클래스형 뷰를 추가하였다. 공식 문서에서 밝힌 바와 같이 클래스형 뷰는 기존의 함수형 뷰를 대체하는 것이 아니다. 주로 사용하는 코드를 간결하게 만들어 놓은 것이라 보면 좋을 것 같다. 그렇기 때문에 사용은 편하지만 사용을 위해서는 추가적인 학습이 필요하다.

📖 함수형 view

모든 기능을 일일이 만들어줘야 하는 장고 초기 view

  • 메서드별 지정 필요 (if문의 반복...)

app/views.py

def index(request):
    if request.method == 'GET':
        response = HttpResponse()
        response.write("<h1>Welcome</h1>")
        response.write("<p>This is my first Django. </p>")
        return response

app/urls.py

from django.urls import path
from . import views

urlpatterns = [
    path('index/',views.index,name='index'),
]

📖 클래스형 view

자주 사용되는 기능들을 편리하게 사용토록 제공하는 새롭게 추가된 view

  • 메서드명에 따라 reqeust를 구분함
  • 클래스를 사용하기에 재사용, 확장이 가능
  • 미리 구성된 기능이 있는 다양한 템플릿들이 제공됨
  • 장고를 사용하여 웹 애플리케이션을 생성함에 있어 일반적인 요구 사항들에 대하여 미리 구성된 기능을 제공하기 때문에 이를 “제네릭 뷰”라고 부르는 경우도 많음.

app/views.py


from django.views import View
class BaseView(View):
	# 메서드명을 get으로 선언시, request가 get일때 실행됨.
    # args : 가변인자처리
    # kwargs : 키워드인자처리
    def get(self, request, *args, **kwargs): 
        response = HttpResponse()
        response.write("<h1>Welcome</h1>")
        response.write("<p>This is my first Django. </p>")
        return response

app/urls.py

  • 클래스형뷰에서 메서드를 가져오기위해서는 파일명.클래스명.as_view() 사용
from django.urls import path
from . import views

urlpatterns = [
	path('index2/',views.BaseView.as_view(), name='index2'),
]

📕 request 메서드

이제 설명하는 모든 내용은 클래스형 view 를 사용

request 메서드에 크게 POST,GET,PUT,UPDATE,DELETE 로 나눠진다.

이 중 대표적인 POST와 GET에 대해서 알아보자.

📖 GET 사용하기

request.GET을 하면 주어진 요청에 대해 딕셔너리형태를 리턴해준다.

사용법 : request.GET.get(key값,없을시 리턴값)

request : http://localhost:8000/test?id=10

from django.views import View
from django.http import JsonResponse

class CustomView(View):
	def get(self, request, *args, **kwargs):
    
    	# request.GET 은 딕셔너리형태를 가진다.
        
    	# 방법1
    	ID_1 = request.GET.get('id',None)
        # 방법2
        ID_2 = request.GET['id']
        
        context = {
        	'id' : ID_1,
        }
        
        return JsonResponse({'message':context}, status=200)

📖 POST 사용하기

request.body 를 하면 주어진 요청 body에 담긴 딕셔너리 형태를 리턴해줌.

사용법 : json.loads(request.body)

import json
from django.views import View
from django.http import JsonResponse

class CustomView(View):
	def post(self, request, *args, **kwargs):
    	
        data = json.loads(request.body)
        
    	# 방법1
    	ID_1 = data.get('id',none)
        # 방법2
        ID_2 = data['id']
        
        context = {
        	'id' : ID_1,
        }
        
        return JsonResponse({'message':context}, status=200)  

📚 Reference

https://walkingplow.tistory.com/68?category=981358
https://devocean.sk.com/blog/techBoardDetail.do?ID=163706

profile
유능한 개발자가 되고 싶은 헬린이

0개의 댓글