許可するHTTPリクエストメソッドを指定する

今まで、許可するHTTPリクエストメソッドを制限、例えばPOSTのみ許可する場合、viewの引数であるrequestのmethodを使って判定していましたが、既にデコレータが用意されていました。

デコレータを使わない場合は以下のようにして、GET,POSTを判定していました。

def save(request):
    if request.method != 'POST':
        raise Exception()
    ...

これをDjangoのデコレータを使って書くと、以下のようにシンプルになります。

from django.views.decorators.http import require_http_methods

@require_http_methods(['POST'])
def save(request):
    ...

これで、POST以外でリクエストした場合、NetworkError: 405 METHOD NOT ALLOWEDが返ってくるようになりました。

この記事が役に立った場合、シェアしていただけると励みになります!!