url에서 두 개 이상 변수 받기 & get parameter

5485 단어 djangodjango
path('api/<uuid:post_pk>/comments/<int:pk>', views.CommentDetailAPIView.as_view()),

이런식으로 각자의 형태에 맞게 그리고 이름을 다르게 해서 받은 뒤, views.py에 다음과 같이 선언하여 이용한다.

def get(self, request, pk, post_pk, format=None):
        comment = self.get_comment(pk)
        serializer = CommentSerializer(comment)
        return Response(serializer.data)

이는 우리가 url을 통해서 받은 값을 view의 변수에 넣을 수 있다는 것을 의미한다.

추가정보 : id는 model을 생성하면 자동으로 만들어 진다.

따라서 해당 post의 pk값과 comment의 pk값을 통해서 댓글 한 개를 APIView로 접근할 수 있게 되었다.

get parameter

참고한 사이트

#%% arguments sequence matters

In [13]: def print_all(*tup, **dic):

    ...: print(tup)

    ...: print(dic)



In [14]: print_all(1, 2, 3,

    ...: A='Russia, Saudi',

    ...: F='Korea, Sweden')

(1, 2, 3)


{'A': 'Russia, Saudi', 'F': 'Korea, Sweden'}

위의 예시로 전부 파악할 수 있다.

  • get의 가변 매개변수로는 두 가지가 있는데, 첫번째로 *arg, 두번째로 **kwarg 가 있다. arg는 포인터 하나이기 때문에 tuple로 표현되고, kwarg는 포인터가 두개이기 때문에 dictionary typedata가 들어갈 수 있다.

  • 함수를 이용할 때 무조건 tuple dictionary 순으로 parameter가 들어가야 한다. 그렇지 못하면 오류가 발생한다.

  • 우리가 위에서 넣은 pk, post_pk*arg에 값을 넣은 것이다.

좋은 웹페이지 즐겨찾기