ValueError at /edit/3 视图 main_panel.views.edit 未返回 HttpResponse 对象。它返回了无



我正在尝试向我的项目添加一个编辑按钮,但给了我一个错误。

以下代码是我的views.py文件。

def edit(request, list_id):
if request.method == 'POST':
item = List.objects.get(pk=list_id)
form = ListForm(request.POST or None, instance=item)
if form.is_valid():
form.save()
return redirect('home')
else:
item = List.objects.get(pk=list_id)
return render(request, 'main_panel/edit.html', {'item': item})

这是我的编辑.html

{% extends 'main_panel/base.html' %}
{% block content %}
{% if item  %}
<form class="form-inline my-2 my-lg-0" method="POST">
{% csrf_token %}

<input type="search" value="{{ item.name }}" name="name">
<input type="search" value="{{ item.choice_field }}" name="choice_field">
<input type="search" value="{{ item.product }}" name="product">
<input type="search" value="{{ item.avans }}" name="avans">
<input type="search" value="{{ item.total_price }}" name="total_price">
<input type="search" value="{{ item.status }}" name="status">
<button type="submit">Kaydet</button>
</form>
{% endif %}
{% endblock %}

这是我的 urls.py

from django.urls import path
from . import views
urlpatterns = [
path('', views.home, name='home'),
path('add/', views.add, name='add'),
path('delete/<list_id>', views.delete, name='delete'),
path('edit/<list_id>', views.edit, name='edit')
]

这给了我以下错误:

值错误在/edit/3 视图main_panel.views.edit未返回HttpResponse对象。 它返回了"无"。

当我在编辑数据后单击提交按钮时,它给了我错误。感谢任何帮助。谢谢。

如果您的视图收到 POST 请求并且表单无效,则该函数不会执行显式 return 语句并返回默认值None

我建议你看看这个例子:https://docs.djangoproject.com/en/2.1/topics/forms/#the-view

了解最后一行如何成为 GET 请求的默认返回语句,而不是有效的 POST 请求。

正如mg所提到的,如果form.is_valid()true,它不会隐式return某些东西。 它会给你留下None

def edit(request, list_id):
if request.method == 'POST':
item = List.objects.get(pk=list_id)
form = ListForm(request.POST or None, instance=item)
if form.is_valid():
form.save()
return redirect('home')
return redirect('error_page') # or basically any other return maybe HttpResponse

最新更新