2016-07-15 19 views
0

私は(すべてのAPIエンドポイント上)Djangoの休息フレームワーク(DRF)グローバルで構築された私のAPIにOPTIONS方法を無効にしたいDjango Rest FrameworkのOPTIONSメソッドをグローバルに無効にするにはどうすればよいですか?

Iドン何かある現在OPTIONS呼び出しが戻る、

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

誰かが覗き見したくない。私は空白の文字をgithubがそのAPIなどで返すように戻したいと思います。私はを返すが、ヘッダーを検査する機能ベースビュー、上

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

を試み

は、繰り返しOPTIONSを有する

Allow →POST, OPTIONS, OPTIONS 

を示します。

どのように達成できますか?ありがとう。

答えて

0

custom permission classを実装するだけです。

your_app/permissions.py(アプリの権限ファイル)

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 

もDEFAULT_PERMISSION_CLASSESの設定を使用して、グローバルなデフォルトの権限としてこれを設定します。

REST_FRAMEWORK = { 
    'DEFAULT_PERMISSION_CLASSES': (
     'your_app_name.permissions.DisableOptionsPermission', 
    ) 
} 

これは、OPTIONSメソッドのすべての着信要求を許可しません。あなたにも、独自のメタデータクラスを実装することができ

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

:あなたの設定で

1

は、のようなものを追加します。これをNoneに設定すると、OPTIONSリクエストでHTTP 405が返されます。