python从入门到实践,Django3.0 报错cannot import name 'login' from 'django.contrib.auth.views'

 在学习注册用户的过程中,视图中下面的代码
from django.contrib.auth.views import login
启动django服务时,报错:
ImportError: cannot import name 'login' from 'django.contrib.auth.views'
 
第一次:修改代码为
from django.contrib.auth import login

django服务启动正常,但在点击login链接时又出现如下错误

TypeError at /users/login/login() got an unexpected keyword argument 'template_name'
 
第二次:修改代码为
from django.contrib.auth.views import LoginView 

 

原因分析:
1.从 django-1.11开始,基于函数的登录,注销等视图已被重写为基于类的视图: LoginView 和 LogoutView类,如 release notes中所指定的那样.仍然可以使用“旧的”基于函数的视图,但是被标记为已弃用.
2.在django-2.1中,已删除旧的基于功能的视图,如release notes中所述.
 
修改后代码:
 
 

"""
为应用程序users定义URL模式""" from django.conf.urls import url from django.contrib.auth.views import LoginView from . import views urlpatterns = [ # 登录页面 url(r'^login/$',LoginView.as_view(template_name='users/login.html'), name='login'), ] app_name ='users'

 

 
 

posted @ 2020-10-18 13:52  一壶浊酒喜相逢  阅读(542)  评论(0)    收藏  举报