2015-04-29 3 views
3

У меня есть простой вид входа:Джанго Логин - отсутствует 1 требуется позиционная аргумент

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)) 

Когда я пытаюсь перейти на страницу входа, я получаю ошибку:

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

Что я делаю не так?

+1

код кажется прекрасным для меня, убедитесь, что вы перезагрузили сервер после изменения исходного кода. –

ответ

0

Ваш код выглядит правильно, убедитесь, что ваш импорт верен.

from django.contrib.auth import authenticate, login

1

Я получил ту же ошибку. Мой файл urls.py имеет прокладывайте

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

Я изменил его:

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

Проверьте свой маршрут.

0

Ваша проблема с определением функции в вашем представлении logwanie. Вы вызываете ту же функцию с разными именами

, где вы вызываете функцию login(request, user) вместо этого заменяете ее на logowanie(request, user).

0

Вероятно, у нас такая же ошибка.

Я решил его, исправляя одну строку в urls.py

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

в этом:

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

Это должно быть имя точки зрения входа вы создали, что «logowanie ' в твоем случае.