在 django 视图中编辑用户错误:视图feedback.views.users_edit未返回 HttpResponse 对象。它返回了无



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

ValueError:视图反馈.views.users_edit没有返回HttpResponse对象。它返回None。

视图.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 HttpResponse('Some message here')

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

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'并且表单无效,则到达视图函数的末尾时不会有任何返回语句。默认情况下,每个函数都返回None,它不是HttpResponse对象。

你必须经常回复你的观点。

最新更新