我有针对用户的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对象。
你必须经常回复你的观点。