首页 > 解决方案 > login() 缺少 1 个必需的位置参数:“请求”

问题描述

当我尝试使用带有 Django 应用程序的电子邮件登录时出现此错误。

TypeError at /accounts/login
login() missing 1 required positional argument: 'request'
Request Method: POST
Request URL:    http://127.0.0.1:8000/accounts/login
Django Version: 2.2.4
Exception Type: TypeError
Exception Value:    
login() missing 1 required positional argument: 'request'

我的代码在 django 视图中看起来像这样

def login(request):
  if request.method == 'POST':
    #username = request.POST['username']
    email = request.POST['email']
    password = request.POST['password']
    

    user = auth.authenticate(request, email=email, password=password)

    if user is not None:
      auth.login(request, user)
      messages.success(request, 'You are now logged in')
      return redirect('dashboard')
    else:
      messages.error(request, 'Invalid credentials')
      return redirect('login')
  else:
    return render(request, 'accounts/login.html')

网址.py

urlpatterns = [
   path('login', views.login, name='login'),
   path('register', views.register, name='register'),
   path('logout', views.logout, name='logout'),
   path('dashboard', views.dashboard, name='dashboard')
]

标签: pythondjangoauthentication

解决方案


推荐阅读