2016-07-15 3 views
0

Ich mag OPTIONS Methode auf meiner API mit Django übrigen Framework (DRF) global (auf allen API-Endpunkten)Wie deaktiviere ich die OPTIONS-Methode auf Django Rest Framework global?

derzeit einen OPTIONS Aufruf zurückkehrt,

{ 
    "parses": [ 
    "application/json", 
    "application/x-www-form-urlencoded", 
    "multipart/form-data" 
    ], 
    "renders": [ 
    "application/json" 
    ], 
    "name": "Login Oauth2", 
    "description": "" 
} 

die etwas gebaut deaktivieren, die ich don ist Ich will nicht, dass jemand hineinspäht. Ich möchte ein leeres Zeichen zurückgeben, wie Github auf seiner API oder etwas anderem tut.

Ich versuchte

@api_view(['POST']) 
def my_method(request): 
    if request.method == 'OPTIONS': 
      return Response() 

auf einer Funktion basiert Ansicht, die eine kehrt aber Inspizieren die Header zeigen,

Allow →POST, OPTIONS, OPTIONS 

, die eine wiederholte OPTIONS hat.

Wie erreiche ich das? Vielen Dank.

Antwort

0

Implementieren Sie einfach eine custom permission class.

your_app/permissions.py (Berechtigungen Datei für Ihre Anwendung)

from rest_framework import permissions 

class DisableOptionsPermission(permissions.BasePermission): 
    """ 
    Global permission to disallow all requests for method OPTIONS. 
    """ 

    def has_permission(self, request, view): 
     if request.method == 'OPTIONS': 
      return False 
     return True 

Auch global dies als Standard-Berechtigung gesetzt, die DEFAULT_PERMISSION_CLASSES Einstellung.

Dies wird alle eingehenden Anfragen für OPTIONS-Methode nicht zulassen.

1

In Ihren Einstellungen, fügen Sie so etwas wie:

REST_FRAMEWORK = { 
    'DEFAULT_METADATA_CLASS': None, 
} 
if DEBUG: 
    # the default value 
    REST_FRAMEWORK['DEFAULT_METADATA_CLASS']: 'rest_framework.metadata.SimpleMetadata' 

Sie können auch Ihre eigene Metadatenklasse implementieren. Wenn Sie dies auf None festlegen, wird HTTP 405 auf OPTIONS Anfragen zurückgegeben.

Verwandte Themen