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에대한 정보
