如何解决在django视图中编辑用户错误:视图feedback.views.users_edit没有返回HttpResponse对象它返回None
我为用户提供CRUD操作。除了我对编辑用户的功能外,其他所有功能都运行良好。它可以保存更改,但是当我尝试检查是否可以将用户名更改为现有用户名时,它会为我提供:
ValueError:视图feedback.views.users_edit没有返回 HttpResponse对象。而是返回None。
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块中添加一行以返回响应或呈现类型响应,以防万一您的条件没有被检查...例如add
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,context)
,
如果request.method不是'POST'并且格式无效,则无需任何 return 语句即可到达视图函数的末尾。默认情况下,每个函数都返回 None ,它不是HttpResponse对象。
您必须始终从视图中返回响应。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。