mmc
mmc

Reputation: 327

Django Rest Framework GET request with params

I'm trying to make a get request with params (srcFilename) in Django Rest Framework. I'm pretty confused about where to add the "req.query.srcFilename" (as it would be in javascript) in django. I read I have to add the complete url with the params in "<>" as shown in the code below, but it wont find the url.

views.py:

@api_view(['GET'])
def api_generate_signed_url(request, srcFilename):
    print(f'srcFilename: {srcFilename}')
    bucket = storage_client.bucket(bucket_name)
    blob = bucket.blob(srcFilename)
    if request.method == 'GET':
        url = blob.generate_signed_url(
            version="v4",
            # This URL is valid for 15 minutes
            expiration=datetime.timedelta(minutes=15),
            # Allow GET requests using this URL.
            method="GET",
        )
        print(f"Generated GET signed URL: {url}")
        return Response(url)

urls.py:

from django.urls import include, path
from rest_framework import routers
from .views import api_generate_signed_url

router = routers.DefaultRouter()

urlpatterns = [
    path('', include(router.urls)),
    path('api-auth/', include('rest_framework.urls', namespace='rest_framework')),
    path(r'signedurl?srcFilename=<srcFilename>', api_generate_signed_url),
]

When trying this in Postman I get the following error:

The current path, signedurl, didn't match any of these.

Postman screenshot

Upvotes: 1

Views: 2939

Answers (1)

Manan M.
Manan M.

Reputation: 1394

You have to change your path as below...

path('signedurl', api_generate_signed_url),

No need to write ?srcFilename=<srcFilename>. Just remove it.

Then in your view access your request parameters through the QueryDict request.query_params.get('srcFilename').

Upvotes: 2

Related Questions