Django login - missing 1 required positional argument

I have a simple login view:

def logowanie(request):
    if request.method == 'POST':
        user = authenticate(
            username=request.POST.get('id_username', '').strip(),
            password= request.POST.get('id_password', ''),
            )
        if user is None:
            messages.error(request, u'Invalid credentblog.ials')
        else:
            if user.is_active:
                login(request, user)
                return HttpResponseRedirect(request.GET.get('next', '/'))
            else:
                messages.error(request, u'User is not active.')

                return render_to_response('registration/login.html', locals(),      
                    context_instance=RequestContext(request))

      

When I try to go to the login page, I get the error:

TypeError: login() missing 1 required positional argument: 'user'

      

What am I doing wrong?

+4


source to share


5 answers


I got the same error. My urls.py file has a route

url(r'^login', navigoWeb_views.login, name='log'),

      

I changed it to:



url(r'^log', navigoWeb_views.log, name='log'),

      

Check your route.

+2


source


your code looks correct, make sure your import is correct.



from django.contrib.auth import authenticate, login

0


source


Your problem is with the definition of the function in your view logwanie

. You are calling the same function with different names

where you call the function login(request, user)

 replace it with logowanie(request, user)

.

0


source


We probably have the same error.

I solved it by fixing one line in urls.py

urlpatterns = patterns(
    ...
    url(r'^login/$', views.login, name='login'),
)

      

in it:

urlpatterns = patterns(
    ...
    url(r'^login/$', views.logowanie, name='login'),
)

      

This should be the name of the login you created, which is "logowanie" in your case.

0


source


make sure the function name matches the one defined in your file views.py

.

So use views.function_name

like this:

url(r'^user_login/$',views.user_login,name='user_login')

      

0


source







All Articles