Editing user in django views error: The view feedback.views.users_edit didn't return an HttpResponse object. It returned None instead

Editing user in django views error: The view feedback.views.users_edit didn't return an HttpResponse object. It returned None instead

我有用户的CRUD操作。一切都运行良好,除了我的编辑用户功能。它保存了更改,但是当我尝试检查是否可以将用户名更改为现有用户名时,它给了我:

ValueError: The view feedback.views.users_edit didn't return an HttpResponse object. It returned None instead.

views.py

def users_edit(request, id=0):
    if request.method == 'GET':
        if id == 0:
            form = UserForm()
        else:
            users =  CustomUser.objects.get(pk=id)
            form = UserForm(instance=users)
        return render(request, 'useredit.html', {'form': form})
    else:
        if id == 0:
            form = UserForm(request.POST)
        else:
            users =  CustomUser.objects.get(pk=id)
            form = UserForm(request.POST, instance=users)
        if form.is_valid():
            form.save()
            return redirect('feedback:users')

userdelete.html

{% extends 'main.html' %}


{% block content %}

<p>Are you sure to delete this {{user.email}} ?</p>
    <form action="{% url 'feedback:userdelete' user.id %}" method="POST">
        {% csrf_token %}
        <a href="{% url 'feedback:users' %}">Cancel</a>
        <input type="submit" name="Confirm">
    </form>
{% endblock content %}

我正在使用 django2.2

您只需要在您的 if 块中添加一行到 return 响应或呈现类型响应,以防检查 none 您的条件...例如 add

return HttpResponse('Some message here')

作为您视图中的最后一行,只是为了确保在任何情况下您的视图都会 return 一个响应对象。

PS 如果有人觉得有用,请编辑整个代码:

def users_edit(request, id=0):
    if request.method == 'GET':
        if id == 0:
            form = UserForm()
        else:
            users =  CustomUser.objects.get(pk=id)
            form = UserForm(instance=users)
        return render(request, 'useredit.html', {'form': form})
    else:
        if id == 0:
            form = UserForm(request.POST)
        else:
            users =  CustomUser.objects.get(pk=id)
            form = UserForm(request.POST, instance=users)
        if form.is_valid():
            form.save()
            return redirect('feedback:users')
        context = {'form': form}
        return render(request, 'useredit.html', context)

如果 request.method 不是 'POST' 且表单无效,则无需任何 return 语句即可到达视图函数的末尾.默认情况下,每个函数 returns None 不是 HttpResponse 对象。

您必须始终return 回应您的观点。