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 回应您的观点。
我有用户的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 回应您的观点。