Reputation: 45
I am having problem in Django authentication, whenever I try to login it gives 'str' object has no attribute 'pk' error. I am using MySql as my database.
# 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'),
]
Upvotes: 1
Views: 477
Reputation: 477891
You should login(..)
[Django-doc] a User
object, so user
, not the , so:username
…
login(request, user)
…
Upvotes: 1