2013-07-20 3 views
0

Я следую некоторым основным учебным пособиям по Django. У меня есть следующие в моем views.py:Django auth - успех и неудача приводят к такому же поведению

def login(request, onsuccess='/', onfail='/login/'): 
    c = {} 
    c.update(csrf(request)) 
    if request.method == "GET": 
     return render_to_response('login.html', {'method': 'get'}, context_instance=RequestContext(request)) 
    else: 
     user = authenticate(username=request.POST.get('username'), password=request.POST.get('password')) 
     if user is not None: 
      login(request, user) 
      return redirect(onsuccess) 
     else: 
      return redirect(onfail) 

Я знаю, что логика GET/POST работает, потому что у меня была другая return_to_render заявление после того, как пост, чтобы отправить «метод»: «после» к мнению, в попытке отладки. Я просто печатаю это значение в представлении, чтобы я мог видеть GET или POST в зависимости от состояния.

Когда я заменил это логикой аутентификации, кажется, что он не возвращает действительный объект пользователя, потому что я перенаправляюсь обратно к логину. Я попытался пройти аутентификацию из оболочки, и она работала нормально.

Любые мысли о том, что еще я могу сделать для отладки?

+3

Да, проверьте, что находится в 'request.POST'. Имеются ли учетные данные и соответствуют ли они тому, что находится в db? И прочитал на https://docs.djangoproject.com/en/dev/topics/forms/ –

+0

да, это было - глупая ошибка. копировать/вставлять элементы имени пользователя/ввода формы из tut и не понимали, что у них нет атрибутов имени, поэтому ничего не приходило на мой POST через имена, которые, как я думал, были там. Я знаю лучше. Если вы хотите опубликовать свой комментарий в ответе, я отметю его правильно. – David

ответ

1

Да, проверьте, что находится в запросе.POST. Имеются ли учетные данные и соответствуют ли они тому, что находится в db? И прочитал Working with forms.

Смежные вопросы