这是我的观点,
def login_view(request) :
if request.method == 'POST':
form = LoginForm(request.POST)
if form.is_valid():
email = form.cleaned_data['email']
password = form.cleaned_data['password']
user = authenticate(email=email, password=password)
if user is not None:
form = LoginForm()
login(request, user)
我收到错误消息:
login() missing 1 required positional argument: 'user'
此外,我正在使用自定义用户模型
编辑
我的urls.py
:
urlpatterns = [
path('',views.register, name='register' ),
path('form',views.form, name = 'form'),
path('login',views.login, name = 'login ')]
答案 0 :(得分:3)
您使用的视图不正确,请尝试
path('login',views.login_view, name = 'login ')
答案 1 :(得分:0)
from django.urls import path, include
from django.contrib.auth import views
urlpatterns = [
path('',views.register, name='register' ),
path('form',views.form, name = 'form'),
path('login/', views.login, {'template_name': 'login.html'}, name='login'),
]
或
from django.urls import path, include
from django.contrib.auth import views as auth_views
urlpatterns = [
path('',views.register, name='register' ),
path('form',views.form, name = 'form'),
path('login/', auth_views.login, {'template_name': 'login.html'}, name='login'),
]
如果您使用的是django自己的身份验证方案,第二个示例将更加准确。
我实际上更改了url文件中的登录路径。我认为该错误是由于路径连接引起的。 那是路径=>
path('login',views.login, name = 'login ')]
答案 2 :(得分:0)
内置的Django用户身份验证仅接受用户名和密码登录。如果要通过电子邮件和密码登录用户,则必须进行更改。
答案 3 :(得分:0)
您在 views.py 中将函数声明为 login_view,但在 urls.py 上将其称为登录名。试试 view.login_view。