Harsh
Harsh

Reputation: 45

Django authentication error : 'str' object has no attribute 'pk'

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

Answers (1)

willeM_ Van Onsem
willeM_ Van Onsem

Reputation: 477891

You should login(..) [Django-doc] a User object, so user, not the username, so:

    …
    login(request, user)
    …

Upvotes: 1

Related Questions