django-rest-framework:全局限制对GET的请求?

时间:2015-08-24 14:24:59

标签: python django rest django-rest-framework

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

这有什么全球性的设定吗?

目前我正在装饰个人观点,如下:

{{1}}

1 个答案:

答案 0 :(得分:4)

您可以撰写custom Permission class IsRequestMethodGet,仅授予对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',
    )
}