ValueError at /testimonials/ Представление resort.views.ReviewsView не вернуло объект HttpResponse. Вместо этого оно вернуло None
""""Рендеринг веб-страниц для отзывов и формы отзывов."""" from django.shortcuts import render, redirect, get_object_or_404 из .models import * из django.views import View из .forms import * from django.views.generic import ListView, DetailView из django.http import HttpResponseRedirect, HttpResponse из django.core.mail import send_mail, BadHeaderError из django.contrib import messages
class ReviewsView(ListView, View):
template_name = "resort/testimonial.html"
model = Review
form = ReviewForm
def post(self, request, *args, **kwargs):
"""Renders the form and creates an instance."""
form = ReviewForm(request.POST)
if form.is_valid():
review = Review.clean_fields()
form.instance.name = request.name
form.instance.review = review
form.save_m2m()
return redirect('reviews')
def get_context_data(self, **kwargs):
"""load data into thecontext dictionary to be rendered on the page."""
context = super().get_context_data(**kwargs)
context.update({
'form': self.form,
})
return context
Следующая строка:
return redirect('reviews')
Если вы хотите перенаправить в любом случае (с валидной или невалидной формой), перенесите перенаправление за пределы if form.is_valid():
def post(self, request, *args, **kwargs):
"""Renders the form and creates an instance."""
form = ReviewForm(request.POST)
if form.is_valid():
review = Review.clean_fields()
form.instance.name = request.name
form.instance.review = review
form.save_m2m()
return redirect('reviews')
В другом случае вам нужно вернуть другой HTTP Response вне if form.is_valid():, вы можете посмотреть документацию django по написанию представлений: https://docs.djangoproject.com/en/4.0/topics/http/views/