首页 > 解决方案 > 带有参数的 Django Rest Framework GET 请求

问题描述

我正在尝试在 Django Rest Framework 中使用参数(srcFilename)发出获取请求。我很困惑在 django 中在哪里添加“req.query.srcFilename”(就像在 javascript 中一样)。我读到我必须在“<>”中添加带有参数的完整网址,如下面的代码所示,但它找不到网址。

视图.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)

网址.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),
]

在 Postman 中尝试此操作时,出现以下错误:

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

邮递员截图

标签: djangoparametersdjango-rest-frameworkgetpython-requests

解决方案


你必须改变你的路径如下......

path('signedurl', api_generate_signed_url),

不用写了?srcFilename=<srcFilename>。只需将其删除。

然后在您的视图中通过 QueryDict 访问您的请求参数request.query_params.get('srcFilename')


推荐阅读