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/

Вернуться на верх