Как мне вывести отзывы на той же странице на которой я их отправляю?
Заранее прошу прощения за мой глупый вопрос.. До меня никак не дойдет как работают post запросы и вывод их на страницы. Нужно вывести то, что пользователь отправляет в форме на этой же странице ниже самой формы.
models.py
from django.db import models
#Отзывы
class Reviews(models.Model):
email = models.EmailField()
name = models.CharField("Имя", max_length=100)
text = models.TextField("Сообщение", max_length=5000)
date_pub = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.name
def get_absolute_url(self):
return reverse("add_review")
class Meta:
verbose_name = "Отзыв"
verbose_name_plural = "Отзывы"
views.py
from django.shortcuts import render, redirect
from django.views.generic import ListView, DeleteView
from django.views.generic.base import View
from .models import *
from .forms import ReviewForm
#Отзывы
class AddReview(View):
def post(self, request):
form = ReviewForm(request.POST)
if form.is_valid():
form.save()
return redirect(Reviews.get_absolute_url())
class index(View):
def ind(self, request):
return render(request, 'index.html')
urls.py
from django.urls import path
from . import views
from .models import *
urlpatterns = [
path(" ",views.AddReview.as_view(), name="add_review")
]
forms.py
from django import forms
from .models import Reviews
#Форма отзывов
class ReviewForm(forms.ModelForm):
class Meta:
model = Reviews
fields = ("name", "email", "text")
reviews.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/5.0.0-alpha2/css/bootstrap.min.css">
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/5.0.0-alpha2/js/bootstrap.min.js">
</head>
<body>
<header>
<nav class="navbar navbar-expand-lg navbar-light bg-light">
<div class="container-xxl">
<a class="navbar-brand" href="">Главная</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav"
aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav">
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="#">О нас</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Услуги</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Номера</a>
</li>
<li class="nav-item">
<a class="nav-link" href="">Отзывы</a>
</li>
</ul>
</div>
</div>
</nav>
</header>
<section class="form__test">
<div class="container-xxl">
<form action="{% url 'add_review' %}" method="post" class="mt-4">
<div class="form-group editContent">
<label for="contactcomment" class="editContent">
Ваш комментарий *
</label>
<textarea class="form-control border" rows="5" name="text" id="contactcomment"
required=""></textarea>
</div>
<div class="d-sm-flex">
<div class="col-sm-6 form-group p-0 editContent">
<label for="contactusername" class="editContent">
Имя *
</label>
<input type="text" class="form-control border" name="name" id="contactusername" required="">
</div>
<div class="col-sm-6 form-group ml-sm-3 editContent">
<label for="contactemail" class="editContent">
Email *
</label>
<input type="email" class="form-control border" name="email" id="contactemail" required="">
</div>
</div>
<button type="submit" class="mt-3 btn btn-success btn-block py-3">
Отправить
</button>
</form>
</div>
</section>
</body>
</html>
