HTTP request안에 request.GET 그리고 request.POST 객체로 쿼리 딕셔너리를 가질 수 있다.
# [views.py] try: queryset = Event.objects.all().order_by('-event_id') order_by = request.GET.get('order_by', None) if order_by == 'hits': queryset = Event.objects.all().order_by('-event_views') return JsonResponse({'status' : 200, 'event_list': list(queryset.values())}, status = 200) except KeyError: return JsonResponse({"status": 400, "message" : "Invalid Value"}, status = 400)뷰 클래스에 위와 같이 설정하고 파라미터 키:밸류 값으로
order_by : "hits"
와 같이 GET요청을 주면장고의 request.GET 에는
<QueryDict: {'order_by': ['hits'], }>가 들어온다.테스트할 때 파라미터를 꼭 넣어줘야 한다.
# [views.py] class DetailEvent(generics.RetrieveUpdateDestroyAPIView): queryset = Event.objects.all() serializer_class = EventSerializer
# [urls.py] urlpatterns = [ path('event/<int:pk>/',views.DetailEvent.as_view()), ... ]url 파라미터는 뷰클래스 함수에서 self와 request외에 다른 인자를 가지게 되며 그 인자값이 엔드포인트가 되고 위처럼 urls 파일에 반영을 해줘야 한다.
localhost:8000/event/1
위와 같이 테스트 할 때 따로 파라미터를 설정하지 않고
url에 바로 반영하여 테스트하면 된다.
url 파라미터는 인자가 없으면 안되고 인자값으로 확실한 구분이 가능한 경우(특정 상품의 정보 등)에 주로 사용하며
쿼리 파라미터는 검색과 같이 여러개의 조건이 결합될 때 주로 사용된다.