【发布时间】:2020-11-23 21:03:38
【问题描述】:
我正在尝试在名为“website/edit1,2,3,4,...”的页面上编辑表单上的项目
在编辑表单项后单击“编辑”时,出现上述错误。网站上的所有错误都不像解决方案。我正在关注的教程(现在尝试添加我自己的编辑功能)说要导入 HttpResponseRedirect 而不是 HttpResponse ,就像在 S/O 的解决方案中一样。无论如何,这是views.py文件
from django.shortcuts import render, redirect
from .models import List
from .forms import ListForm
from django.contrib import messages
from django.http import HttpResponseRedirect
def home(request):
all_items = List.objects.all
return render(request, 'home.html', {'all_items': all_items})
def about(request):
return render(request, 'about.html', {})
def edit(request, item_id):
if request.method == 'POST':
item = List.objects.get(pk=item_id)
form = ListForm(request.POST or None, instance=item)
if form.is_valid():
form.save()
messages.success(request, ('Item Had Been Edited'))
return redirect('home')
else:
item = List.objects.get(pk=item_id)
return render(request, 'edit.html', {'item': item})
def delete(request, item_id):
item = List.objects.get(pk=item_id)
item.delete()
return redirect('home')
这是 urls.py 文件
from django.urls import path
from . import views
urlpatterns = [
path('', views.home, name='home'),
path('about', views.about, name='about'),
path('delete/<item_id>', views.delete, name='delete'),
path('edit/<item_id>', views.edit, name='edit')
]
...和 forms.py 文件
from django import forms
from .models import List
class ListForm(forms.ModelForm):
class Meta:
model = List
fields = ["First_name", "Surname", "Street", "Town", "Province", "Postal_code"]
【问题讨论】:
-
如果
form.is_valid()返回False,您不会返回任何内容。通常您重新呈现表单。 -
else: ... return render(request, 'edit.html', {'item': item})可能缩进错误