2014-10-02 3 views
1

나는 장고 1.7과 장고의 REST 프레임 워크 2.4.3을 사용하고있다. 끝점은 /items/{pk}/notify이며, 이는 UpdateAPIView을 사용하여 아름답게 작동합니다. 이 URL에 여러 쿼리 매개 변수를 전달하려고하지만 첫 번째 매개 변수 만 가져올 수 있습니다. URL의 모든 후속 매개 변수가 커밋됩니다. Django가 QueryDict을 가지고있는 것을 발견했습니다. 그런 다음 lists을 사용하여 모든 값을 얻었습니다. 불행히도, 이것은 작동하지 않았다. 여기PUT 요청에서 모든 URL 매개 변수를 가져 오는 방법은 무엇입니까?

내가 무엇을 가지고 -

class Notify(generics.UpdateAPIView): 
    queryset = Item.objects.all() 
    serializer_class = ItemSerializer 

    def update(request, *args, **kwargs): 
     print('request: %s', request) 
     print('args: %s' % args) 
     print('kwargs: %s' % kwargs) 

     return Response(data='123') 

내가 curl -X PATCH 127.0.0.1:8000/items/notify/?ticket_no=123&foo=bar을 수행하여 테스트입니다. 이상한 것은 로컬 Django 서버가 전체 URL을 로깅하지 않는다는 것입니다. 나는 [02/Oct/2014 08:52:03] "PATCH /items/1234/notify/?ticket_no=123 HTTP/1.1" 200 5 만 봅니다.

모든 URL 매개 변수에 액세스하려면 어떻게해야합니까?

답변

1

이것은 장고에서는 문제가되지 않습니다. 이것은 curl 명령에 문제가 있습니다. &은 셸에서 특별히 처리하는 메타 문자이기 때문에 URL을 따옴표로 묶어야합니다. 따옴표없이

curl -X PATCH '127.0.0.1:8000/items/notify/?ticket_no=123&foo=bar' 

, & 백그라운드에서 명령을 실행하고 다음 명령어로 이동하는 쉘을 알려줍니다. 따라서 쉘은 두 개의 별도 명령을 실행하고 첫 번째 get 매개 변수 만 URL에 포함됩니다.

curl -X PATCH 127.0.0.1:8000/items/notify/?ticket_no=123 
foo=bar 
+0

감사합니다. 다행히 쉽게 볼 수 있습니다. –

관련 문제