TypeError: login() got an unexpected keyword argument 'template_name'

841 ワード

最近『Pythonプログラミング入門から実践』に従ってwebアプリケーションの開発を学んでいます.Djangoが提供するデフォルトのログインビューを使用してログインインタフェース機能を実装するときにエラーが発生しました:TypeError:login()got an unexpected keyword argument'template_name’は元々、著者が使用していたDjangoはバージョン1.0であったが、実際には現代コードは:
from django.contrib.auth import login
url(r'^login/$',login,{'template_name'='users/login.html'},name='login')

ただし、Django 2.0にログインビューを内蔵するのは関数ではなく、クラスであり、django.contrib.auth.views.LoginViewに位置し、具体的には以下のように実現される.
from django.conf.urls import url
from django.contrib.auth.views import LoginView
urlpatterns = [
    #      LoginView.as_view     ()
    url(r'^login/$',LoginView.as_view(template_name='users/login.html'),name='login')
]

参照先:
https://blog.csdn.net/lipei_csdn/article/details/84829045