AttributeError at /login/ 'AnonymousUser' object has no attribute '_meta'

im trying to create my own costume view for the login page and im getting the following error.

this is my views:

    def my_view(request):
username = request.POST.get('username')
password = request.POST.get('password')
user = authenticate(request, username=username, password=password)
login(request, user)
return reverse_lazy('HomeView')

this is the urls:

urlpatterns = [
path('', HomeView.as_view(), name='HomeView'),
path('show_todo_list/<int:pk>', ShowToDoView.as_view(), name='Show_To_Do_list'),
path('create_task/', CreateTaskView.as_view(), name='Create_Task'),
path('change_task/<int:pk>', ChangeTaskView.as_view(), name= 'Change_Task'),
path('delete_task/<int:pk>', DeleteTaskView.as_view(), name= 'Delete_Task'),
path('login/', my_view, name='login')

]

and the error is in line 34: login(request, user) AttributeError: 'AnonymousUser' object has no attribute '_meta'

You need to execute the code only in case of POST, and in case of GET you need to return the the template for the user to login.

def my_view(request):
   if request.method == "POST":
       username = request.POST.get('username')
       password = request.POST.get('password')
       user = authenticate(request, username=username, password=password)
       if user:
           login(request, user)
           return reverse_lazy('HomeView')
       return render(request,'login.html',{"invalid":True})
   else:
        return render(request,'login.html')
Back to Top