ValueError at / change-password / Представление authapp.views.ChangePassword не возвращало объект HttpResponse. Вместо этого он вернулся - PullRequest
1 голос
/ 02 мая 2020

Следующая функция, которую я сделал, говорит следующее: ValueError at / change-password / Представление authapp.views.ChangePassword не возвращало объект HttpResponse. Вместо этого он вернул None. пожалуйста, помогите TIA.

def ChangePassword(request):
    if request.method == 'POST':
        form = PasswordChangeForm(data=request.POST, user=request.user)
        if form.is_valid():
            form.save()
            return redirect('profile')
    else:
        current_user = request.user
        form = PasswordChangeForm(user=current_user)
        pwform = {'form': form, 'user': current_user}
        return render(request, 'authapp/changepw.html', pwform)

1 Ответ

0 голосов
/ 02 мая 2020

Вы не представляете ответ, вы создаете форму и т. Д. c. но вы должны вернуть HTTP-ответ, например, с render:

from django.shortcuts import <b>render</b>

def ChangePassword(request):
    if request.method == 'POST':
        form = PasswordChangeForm(data=request.POST, user=request.user)
        if form.is_valid():
            form.save()
            return redirect('profile')

    else:
        current_user = request.user
        form = PasswordChangeForm(user=current_user)
    # <i>not</i> in the <b>else</b> block
    return <b>render(</b>request, 'some_template.html', {'form': form}<b>)</b>

Вызов render, должен not быть выполнен в предложении else. Поскольку возможно, что вы делаете запрос POST, но form недействителен. Если вы отобразите его в блоке else, то для недопустимой формы он не будет отображать ответ.

...