クラスベースビューを利用時に、以下の様な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メソッドのキーワード引数として使っている場合は名前を変えましょう。
コメントを残す