[Fixed]-Django rest framework: Get url path variable in a view

25πŸ‘

The URL parameters are available in self.kwargs.
From the documentation:

Filtering against the URL

Another style of filtering might involve restricting the queryset based on some part of the URL.

For example if your URL config contained an entry like this:

url('^purchases/(?P<username>.+)/$', PurchaseList.as_view()),

You could then write a view that returned a purchase queryset filtered by the username portion of the URL:

class PurchaseList(generics.ListAPIView):
   serializer_class = PurchaseSerializer

   def get_queryset(self):
       """
       This view should return a list of all the purchases for
       the user as determined by the username portion of the URL.
       """
       username = self.kwargs['username']
       return Purchase.objects.filter(purchaser__username=username)
πŸ‘€OrangeDog

2πŸ‘

You have to use lookup_field in your views to get product_id and the view should not belongs to any model. Here I already answer a question like yours using django rest framework to return info by name

Hope this will help to solve your problem.

πŸ‘€mohammadjh

0πŸ‘

This is my approach:

Update URL:

url(r'^product-configuration$', views.ProductDetailConfiguration, name='product-configuration'),

In view.py:

class ProductDetailConfiguration(viewsets.ModelViewSet):
    lookup_field = 'product_id'
    serializer_class = ProductConfigurationSerializer

    def retrieve(request, product_id=None, *args, **kwargs):
        queryset = self.get_queryset()
        # Filter with produc_id
        # print(product_id)
        # Return Response
πŸ‘€Phuong Vu

-1πŸ‘

You can get the data from the request url by :-
data_dict = self.request.data
This will return a dictionary of all the parameters of the request url.
You can use the parameter name as the key

πŸ‘€Ajay Aneja

Leave a comment