I'm trying to edit items on a form on a page called 'website/edit1,2,3,4,...'
When I click 'edit' after editing the form items, I get the error above. None of the errors on the site resembles a solution. The tutorial I was following (and now trying to add my own edit function) says to import HttpResponseRedirect
and not HttpResponse
as in the solutions on S/O. Anyways, here's the views.py file
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')
Here's the urls.py file
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')
]
.. . and the forms.py file
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()
returnsFalse
, you do not return anything. Normally you rerender the form. – Willem Van Onsemelse: ... return render(request, 'edit.html', {'item': item})
possible wrong indentation – Alvi15