クラスベースビューを使っていると以下の様な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.
対処法
キーワード引数の入力ミスか、変数が未定義の可能性があります。確認しましょう。
コメントを残す