ログアウトしようとしたときに、TypeError が出る
認証周りの勉強中に、はまってしまったみたいです。
環境
Ubuntu 18.04LTS Python 3.7.3 Django 2.2
現象と対応
こちら Django 会員登録機能 + ログイン機能 - Qiita を参考に認証の勉強していたんですが、ログアウトしようとしたら以下のエラーが出てしまいました。
TypeError at /logout/ logout() got an unexpected keyword argument 'template_name'
で紆余曲折をはしょって、最終的には、urls.py
に以下のように直しました。なぜか path
もurl
も辞書データを受け取れないみたいで、ビューのメソッドではなくクラスであれば受け取れるらしいです?。エラーが出なくなりちゃんとログアウトできるようになりました。
from django.contrib import admin from django.contrib.auth.views import LoginView, LogoutView ★←ここを追加した from django.contrib.auth import login, logout from django.urls import path from django.conf.urls import url from accounts import views urlpatterns = [ path('admin/', admin.site.urls), path('', views.index, name="index"), path('create/', views.create_account, name="create_account"), path('login/', views.account_login, name="login"), path('logout/', LogoutView.as_view(template_name='index.html'), name="logout"), ★←ここを追加した # url(r'^logout/$', logout, {'template_name': 'index.html'}, name='logout'), ]