【问题标题】:django-rest-framework: globally restrict requests to GET?django-rest-framework:全局限制对 GET 的请求?
【发布时间】:2015-08-26 08:33:05
【问题描述】:

我正在使用 django-rest-framework,我希望只允许对我的 API 的 GET 请求。

是否有一些全局设置?

目前我正在装饰单个视图,如下所示:

@api_view(['GET'])
def my_api_view(request, format=None):
    # get data

【问题讨论】:

  • 如果以下 Rahul Gupta 的回答解决了问题,最好将其标记为已接受来奖励他的时间。 :)

标签: python django rest django-rest-framework


【解决方案1】:

你可以写一个custom Permission classIsRequestMethodGet,它将只授予对GET请求的访问权限。

要实现自定义权限IsRequestMethodGet,重写BasePermission 类并实现.has_permission(self, request, view) 方法。如果请求应该被授予访问权限,该方法应该返回True,否则返回False

from rest_framework import permissions

class IsRequestMethodGet(permissions.BasePermission):
    """
    The request is a GET request.
    """

    def has_permission(self, request, view):
        return request.method == 'GET' # Returns True if GET request

因此,如果请求方法为GET,则请求将被授予访问权限,否则不会。

现在,您需要在全局设置中包含此自定义权限类。

REST_FRAMEWORK = {
    'DEFAULT_PERMISSION_CLASSES': (
        'my_app.permissions.IsRequestMethodGet',
    )
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-21
    • 2020-08-26
    • 2019-01-07
    • 2020-11-09
    • 1970-01-01
    • 2013-03-12
    • 2019-05-04
    • 1970-01-01
    相关资源
    最近更新 更多