python版本:
Django版本: 3.0.3
報錯信息:
File "D:\python_work\learning_log\users\urls.py", line 4, in <module> from django.contrib.auth.views import login ImportError: cannot import name 'login' from 'django.contrib.auth.views' (D:\python_work\learning_log\ll_env\lib\site-packages\django\contrib\auth\views.py)
源代碼:
"""為應用程序users定義URL模式""" from django.conf.urls import url from django.contrib.auth.views import login from . import views urlpatterns = [ # 登錄頁面 url(r'^login/$',login,{'template_name':'users/login.html'}, name='login'), ]
原因:
從 django-1.11開始,基於函數的登錄,注銷等視圖已被重寫為基於類的視圖: LoginView 和 LogoutView類,如 release notes中所指定的那樣.仍然可以使用“舊的”基於函數的視圖,但是被標記為已棄用.
在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'), #path('login/', LoginView.as_view(template_name='users/login.html'), name="login"), ] app_name ='users'
