Представление SugarNoter.views.Index не возвращало объект HttpResponse. Вместо этого он вернулся - PullRequest
0 голосов
/ 12 октября 2019

Всякий раз, когда новый пользователь собирается зарегистрироваться, после этого я получаю эту ошибку, даже если я возвращаю HttpResponse:

Представление SugarNoter.views.Index не возвращало объект HttpResponse. Вместо этого он вернул None.

views.py:

def Index(request):
    if request.method=='POST':
        form = UserCreationForm(request.POST)
        if form.is_valid():
            form.save()
            username = form.cleaned_data.get('username')
            passwd = form.clean_password2()
            user = auth.authenticate(username=username, password=passwd)
            auth.login(request, user)
            return redirect(f'users/{str(request.user)}')
    else:
        context = {
            'form':UserCreationForm()
        }
        return render(request, 'index.html', context)

html файл

{% load crispy_forms_tags %}
    <div class="container">
      <div class="col-sm-6 my-5 mx-auto">
        <div class="card align-items-center justify-content-center">
          <div class="card-body">
            <form method="POST">
              {% csrf_token %}
              {{ form | crispy }}
              <button type="button" class="btn btn-danger" onclick='window.location="login"'>Login</button>
              <button type="submit" class="btn btn-success">Sign Up</button>
            </form>
          </div>
        </div>
      </div>
    </div>

Что мне делать?

1 Ответ

1 голос
/ 12 октября 2019

Вы не обрабатывали ситуацию, когда ваш form.is_valid() неверен, в этом случае у вас нет возврата. Поэтому вам нужно вернуть что-то и для условия else ... Или переместить оператор перенаправления из условия if ...

def Index(request):
    if request.method=='POST':
        form = UserCreationForm(request.POST)
        if form.is_valid():
            form.save()
            username = form.cleaned_data.get('username')
            passwd = form.clean_password2()
            user = auth.authenticate(username=username, password=passwd)
            auth.login(request, user)
        return redirect(f'users/{str(request.user)}')
    else:
        context = {
            'form':UserCreationForm()
        }
        return render(request, 'index.html', context)

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...