ValueError at /testimonials/ The view resort.views.ReviewsView didn't return an HttpResponse object. It returned None instead

"""Renders web pages for the reviews and reviews form.""" from django.shortcuts import render, redirect, get_object_or_404 from .models import * from django.views import View from .forms import * from django.views.generic import ListView, DetailView from django.http import HttpResponseRedirect, HttpResponse from django.core.mail import send_mail, BadHeaderError from 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

Upvotes: 0

Views: 62

Answers (1)

elias174
elias174

Reputation: 36

The next line:

return redirect('reviews') 

If you want to redirect in any case (with valid or invalid form), move the redirect outside of 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')

Other case you need to return other HTTP Response outside of if form.is_valid():, you can see the django documentation of writing views: https://docs.djangoproject.com/en/4.0/topics/http/views/

Upvotes: 0

Related Questions