Django 10. Query String in Django

jiffydev·2020년 10월 19일
1

1. Query String?

쿼리 스트링이란 url의 한 부분으로 특정(합의된) 매개변수에 값을 지정한 것이다. 보통 필드=값 으로 정의된다.
여기서 ?(물음표)는 separator로 쿼리 스트링에는 포함되지 않고 쿼리 스트링의 시작을 알려준다. 매개변수가 여러개일 경우에는 &를 사용해 이어 준다.

2. In Django

장고에서는 urls.py에 request target을 지정해 준다. 그런데 항상 있어야 하는 요소가 아니라 필요할 때만 불러서 보여주는 요소에 굳이 url을 지정할 필요가 있나? 싶은 경우에는 쿼리 스트링을 사용해서 url을 변경할 필요 없이, 요청이 있을 때만 매개변수에 값을 받아 값에 해당하는 자료를 꺼내주는 방식을 사용할 수 있다.
예를 들어 인스타그램 페이지에서 게시물 페이지로 들어가면 우선 전체 댓글(대댓글은 제외한)을 보여주는 url이 있다.

#urls.py
urlpatterns = [
    ...
    path('<int:posting_id>/comments', CommentView.as_view()),
    ...

여기서 댓글 id를 받아 그 댓글의 대댓글을 보여주는 로직을 작성할 때, url을 추가해서 path('<int:posting_id>/comments/<int:comment_id>', CommentView_as_view())처럼 작성할 수도 있지만, 쿼리 스트링을 사용하면 urls.py은 손대지 않고도 위와 같은 기능을 하게 만들 수 있다.
쿼리 스트링의 예는 다음과 같다. posting/id/comments?comment_id=1
이렇게 하면 request에서 comment_id를 받아 이 댓글 아이디에 해당하는 대댓글만 불러올 수 있다.
view에서는 comment_id를 받아올 때 request.GET을 사용하는데, 딕셔너리 형식이므로 request.GET['comment_id']로 값을 받거나, request.GET.get('comment_id')로 가져와서 값이 없으면 None을 반환하는 방법을 사용할 수도 있다.

profile
잘 & 열심히 살고싶은 개발자

0개의 댓글