I tried to make a training project with forms. I wanted to create a code for upgrading feedbacks in the form by Class Based Views. views.py
class UpdateFeedbackView(View):
def get(self, request, id_feedback):
feed = get_object_or_404(Feedback, id=id_feedback)
form = FeedbackForm(instance=feed)
return render(request, 'form_project/feedback.html', context={'form': form})
def post(self, request, id_feedback):
feed = get_object_or_404(Feedback, id=id_feedback)
form = FeedbackForm(request.POST, instance=feed)
if form.is_valid():
form.save()
return HttpResponseRedirect(f'/{id_feedback}')
else:
form = FeedbackForm(instance=feed)
return render(request, 'form_project/feedback.html', context={'form': form})
urls.py
path('<int:id_feedback>', views.UpdateFeedbackView.as_view())
html
{% load static %}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<link rel="stylesheet" href="{% static 'feedback/field.css'%}">
</head>
<body>
<h2>Оставьте отзыв</h2>
<form method="post">
{% csrf_token %}
{% for field in form %}
<div class="form-style">
{{ field.errors }}
{{ field.label_tag }}
{{ field }}
</div>
{% endfor %}
<button type="submit">Отправить</button>
</form>
</body>
</html>
When i try to type an feedback's id, i get this error
TemplateDoesNotExist at /1
The code thinks that id does not exist. However i tried to write the same upgrade code by simple function and it worked well. By debugger, i realised that problem is in GET method but can't understand why.
What did i wrong or miss?
filetree: enter image description here
Your template
form_project/feedback.htmllikely is not put in the right directory. This should be moved toapp_name/templates/form_project/feedback.html.Your view however implements a lot of boilerplate code, and is equivalent to an
UpdateView[Django-doc]:with as url: