Django クラスベースビューでリクエストのメソッドを制限する方法

明示的にリクエストメソッドを制限したい時があります。

今回は、クラスベースビューでリクエストのメソッドを制限する方法を紹介します。

リクエストのメソッドを制限する方法

Viewクラスにhttp_method_namesというクラス変数が定義されています。

http_method_names = ['get', 'post', 'put', 'patch', 'delete', 'head', 'options', 'trace']

通常は、http_method_namesのリストにあるリクエストを受け付け、それに該当するメソッドが実行されます。

メソッドが定義されていない場合はHTTP ERROR 405になります。

getメソッドとpostメソッドのみに制限したい場合は以下の様に書きます。

class CreateUserView(CreateView):
    http_method_names = ['get', 'post']
    # 以下略...

http_method_namesにないメソッドでリクエストをするとHTTP ERROR 405が返却されます。また、Warningログとして記録されます。

スポンサーリンク
スポンサーリンク