Django

쿼리 스트링 불러오기

traveler_JH 2022. 7. 6. 22:45

django 를 사용하여 필터링 을 통해 데이터를 받아와야하는데 데이터를 받아오는 쿼리스트링 에 대해서 알게되었다.

1. request.GET

request.GET은 http request의 정보를 dictionary 데이터로 받는 기능이다.
그럼 왜 dictionary로 데이터를 받을까?

2. request.GET.get

키를 매칭해 밸류를 가져오기 위함이다.

my_dict = {"이름":"김철수", "성별"="남자" , "나이":"15"}

이러한 딕셔너리 데이터가 있다고 치고 이름을 가져오기 위해선 어떻게 하면 될까?

name = my_dict.get("이름")
print(name)
# 김철수

get() 메서드를 이용하면 된다. (+++ my_dict["이름"] 으로도 가져 올수 있음.)

3. url query parameter 적용

def get(self, request, category_pk):

        category = Category.objects.get(id=category_pk)
        topic    = request.GET.get("topic",None)

    url : GET 127.0.0.1:8000/categories/1/boards?topic=1 #토픽이 1인 글들을 가져오기

request.GET.get을 사용해 topic의 밸류값이 1인것을 확인할 수 있다.

request.GET['topic'] 으로도 가져 올 수 있지만
		     이 경우는 밸류값이 없을 경우 에러를 발생시킨다.
                     그러나 request.GET.get 사용하면 밸류값이 없을때 None을 반환한다.

4. request.Get.getlist

만약 같은 변수 값의 쿼리스트링을 쓰려면 어떻게 해야 할까?

?tags=3 # 3번 태그를 가진 것만.
?tags=3&tags=6 # 3번 , 6번 태그를 모두 가진 것
tags     = request.GET.getlist("tags",None)

getlist 함수를 이용하여 리스트 형식으로 tags의 값들을 가져온다.


4-1. 적용하기

tags 같은 경우는 리스트로 담기기 때문에 필터링을 할때 __in (주어진 리스트 안에 존재하는 자료 검색) 조건을 걸었다.
URL에대한 정보