Django as_viewメソッドでキーワード引数を使用時に発生する例外の対処法

クラスベースビューを使っていると以下の様なTypeError例外が発生する事があります。

TemplateView() received an invalid keyword 'aaa'. as_view only accepts arguments that are already attributes of the class.

これはクラス変数として定義されていない変数名をas_viewメソッドのキーワード引数に指定していると発生します。

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

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

as_viewメソッドのキーワード引数は、クラス変数として定義されている変数名のみ利用可能です。

定義されていない変数名をキーワード引数として使うとTypeError例外が発生します。

以下の例はTemplateViewで定義されていないhoge変数をas_viewのキーワード引数と使用した場合に発生するTypeError例外です。

from django.urls import path
from django.views.generic import TemplateView

urlpatterns = [
    path('about/', TemplateView.as_view(hoge='sample', template_name="about.html")),
]

例外

TypeError: TemplateView() received an invalid keyword 'hoge'. as_view only accepts arguments that are already attributes of the class.

対処法

キーワード引数の入力ミスか、変数が未定義の可能性があります。確認しましょう。

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