Django 身份验证错误:'str'对象没有属性'pk'



我在Django身份验证中遇到问题,每当我尝试登录时,它都会给出"str"对象没有属性"pk"错误。我正在使用MySql作为我的数据库。

# views.py
def user_login(request):
if request.method == 'POST':
form = AuthenticationForm(request,data=request.POST)
if form.is_valid():
username = form.cleaned_data.get('username')
password = form.cleaned_data.get('password')
user = authenticate( username= username,password= password)
if user is not None:
login(request,username)
return redirect('app:home')
else:
return render(request,'404error.html',context={})
else:
return render(request,'404error.html',context={})
form = AuthenticationForm()
return render(request,'login.html',context={'form':form})
def user_logout(request):
logout(request)
return redirect('app:home')
#urls.py
# from django.contrib import admin
from django.urls import path,include
# from app import urls
from . import views
app_name = 'app'
urlpatterns = [
path('',views.home,name='home'),
path('register/',views.register,name='register'),
path('login/',views.user_login,name='user_login'),
]

您应该login(..)[Django doc]是一个User对象,所以是user,而不是username,所以:

…
login(request,user)
…

最新更新