无法在Django中导入名称“ login”

4 python django django-authentication

我目前正在Django中工作,正在尝试从中导入logindjango.contrib.auth.views但是出现以下错误:

ImportError: cannot import name 'login'
Run Code Online (Sandbox Code Playgroud)

这是我的urls.py

from django.conf.urls import url
from . import views
from django.contrib.auth.views import login

urlpatterns = [
    url('', views.home),
    url('login', login, {'template_name': 'accounts/login.html'})
]
Run Code Online (Sandbox Code Playgroud)

错误消息(cmd):

ImportError: cannot import name 'login'
Run Code Online (Sandbox Code Playgroud)

Ala*_*air 8

旧的基于功能的认证意见,其中包括login在Django 2.1被拆除。在Django 1.11+中,您应该切换到新的基于类的身份验证视图,包括LoginView

我建议您也改用new path()而不是url()

from django.urls import path
from django.contrib.auth import views as auth_views

urlpatterns = [
    path('', views.home),
    path('login', auth_views.LoginView.as_view(template_name='accounts/login.html')),
]
Run Code Online (Sandbox Code Playgroud)

如果要使用url()re_path(),请确保使用^$开始和结束正则表达式:

url(r'^$', views.home),
url(r'^login$', auth_views.LoginView.as_view(template_name='accounts/login.html')))
Run Code Online (Sandbox Code Playgroud)