我试图在项目中添加一个编辑按钮,并给我一个错误。
以下代码是我的 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})
这是我的 edit.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处的ValueError 视图main_panel.views.edit没有返回HttpResponse对象。 它返回None。
在编辑数据后单击 submit 按钮时,出现错误。感谢任何帮助。谢谢。
答案 0 :(得分:1)
如果您的视图收到POST请求,并且表单无效,则该函数不会执行显式的return语句,并返回默认值None
。
我建议您看一下以下示例:https://docs.djangoproject.com/en/2.1/topics/forms/#the-view
看看最后一行如何成为GET请求和无效POST请求的默认返回语句。
答案 1 :(得分:0)
如 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