2015-08-24 95 views
1

我正在使用django-rest-framework,我想只允許GET請求到我的API。django-rest-framework:全侷限制請求GET?

這是否有一些全局設置?

目前我個人裝飾的看法,就像這樣:

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

如果Rahul Gupta的回答在下面解決了問題,那麼通過將其標記爲接受將獎勵他的時間將是很好的。 :) – spectras

回答

4

你可以寫一個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', 
    ) 
}