Django as_viewメソッドでgetやpost, deleteなどのキーワド引数を利用時に発生する例外の対処法

クラスベースビューを利用時に、以下の様なTypeError例外が発生する事があります。

The method name get is not accepted as a keyword argument to <classname>

この原因はas_viewメソッドに利用不可能なキーワード引数を使っている可能性があります。

今回はこの例外の発生原因と対処法を紹介します。

as_viewメソッドのキーワード引数制限

as_viewメソッドではhttp_method_namesというリスト変数に定義されている文字列をキーワード引数として使えません。

http_method_names変数はViewクラスのメンバ変数です。

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

例えば、次の様にキーワード引数にgetを使った場合、例外が発生します。

path('about/', TemplateView.as_view(get='hoge', template_name="about.html")),

例外

TypeError: The method name get is not accepted as a keyword argument to TemplateView().

対処法

‘get’, ‘post’, ‘put’, ‘patch’, ‘delete’, ‘head’, ‘options’, ‘trace’のどれかをas_viewメソッドのキーワード引数として使っている場合は名前を変えましょう。

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