2014-12-01 4 views
0

Всякий раз, когда пользователь вводит пароль пустой (или имя пользователя) и логин, он показывает эту ошибку:views.log_in не возвращает объект HttpResponse

ValueError at/
The view views.log_in didn't return an HttpResponse object. 

код:

def log_in(request): 
    if request.method == 'POST': 
     form = LoginForm(request.POST) 
     if form.is_valid(): 
      user = form.cleaned_data['username'] 
      pword = form.cleaned_data['password'] 
      user = authenticate(username=user, password=pword) 
      if user is not None: 
       login(request, user) 
       if request.GET.get('next') is not None: 
        return HttpResponseRedirect(request.GET.get('next')) 
       else: 
        return HttpResponseRedirect('/home/') 
      else: 
       return render(request, 'login.html', { 'logform': form, 'error': True}) 
    else: 
     if request.user.is_authenticated(): 
      return HttpResponseRedirect('/home/') 
     else: 
      form = LoginForm() 
      return render(request, 'login.html', { 'logform': form, }) 

Как Я исправляю эту ошибку? Благодарю.

ответ

0

У вас нет значения возврата, если форма недействительна. Обычно выбор де отступов в return render(... линии так, что выполняет какое-то время ни один из ваших переадресаций не срабатывает, что делает неверную форму с его ошибками:

def log_in(request): 
    if request.method == 'POST': 
     # as above 
    else: 
     if request.user.is_authenticated(): 
      return HttpResponseRedirect('/home/') 
     else: 
      form = LoginForm() 
    return render(request, 'login.html', { 'logform': form, }) 
+0

Я таким образом, он не показывает ошибку, если есть не вводится пароль или имя пользователя. Однако, если я ввожу неправильное имя пользователя и пароль, он показывает ошибку. – guy1234567

+0

Вы проверяете ошибки формы или ищете значение '' error '= True', которое вы указываете в контексте, когда ваше имя пользователя/пароль не аутентифицируется? Вы также можете установить это значение, если форма недействительна, если вы смотрите на эту переменную, чтобы показать ошибку, или вы можете проверить свой шаблон 'form.is_bound, а не form.is_valid'. –

+0

Я не могу найти пример шаблона check form.is_bound, а не form.is_valid. Направляй меня, пожалуйста? – guy1234567

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