Hello guys, I'm studying django and tried to do site, I can crate review system
Views.py
from django.shortcuts import render from django.views.generic.base import View from .models import Dish, Snack, Desserts, Lastcourses, Reviews from .forms import ReviewForm
class DishView(View): def get(self, request): dish = Dish.objects.all() snack = Snack.objects.all() desserts = Desserts.objects.all() lastcourses = Lastcourses.objects.all() reviews = Reviews.objects.all()
if request.method == "POST":
form = ReviewForm(request.POST)
if form.is_valid():
form = form.save(commit=False)
form.name = request.name
form.new = request.text
form.save()
return redirect(DishView)
else:
form = ReviewForm()
return render(request, 'index.html',
{'Dish': dish, 'Snack': snack, 'Desserts': desserts, 'Lastcourses': lastcourses,
'Reviews': reviews}, )
forms.py
from django import forms
from .models import Reviews from captcha.fields import ReCaptchaField
class ReviewForm(forms.ModelForm): """Форма отзывов""" captcha = ReCaptchaField()
class Meta:
model = Reviews
fields = ("name", "email", "text", "captcha")
widgets = {
"name": forms.TextInput(attrs={"class": "form-control border"}),
"email": forms.EmailInput(attrs={"class": "form-control border"}),
"text": forms.Textarea(attrs={"class": "form-control border"})
}
index.html
<form action="." method="post">
{{ form.as_p }}
{% csrf_token %}
<p><input type="submit" value="Add comment"></p>
</form>
<h1 style="margin:0 57%">Отзывы</h1>
<input type="hidden" name="parent" id="contactparent" value="">
<div class="dfv" style="display:flex; padding: 5%; justify-content: space-around; flex-wrap: wrap;align-items:center; box-shadow:4px 4px 16px gold;width: 80%;margin:8% 18% 0">
<div class="form-group editContent">
<label for="contactcomment" class="editContent" placeholder=" Сообщение" >
Your comment *
</label>
<textarea class="form-control border" style="padding: 20px;align-items: center;width: 100%;"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" placeholder="Ваше имя*">
Name *
</label>
<input type="text" class="form-control border" name="name" style="padding: 12px;width: 100%;align-items: center;"
id="contactusername" required="">
</div>
<div class="col-sm-6 form-group ml-sm-3 editContent" placeholder="Ваш e-mail*" >
<label for="contactemail" class="editContent">
Email *
</label>
<input type="email" class="form-control border" name="email" style="padding: 12px;width: 100%;align-items: center;"
id="contactemail" required="">
</div>
</div>
</div>
<button type="submit"
class="mt-3 btn btn-success btn-block py-3" style=" padding: 10px; box-shadow:4px 4px 16px gold;width: 50%; margin: 5% 37%; align-items: center;">
Send
</button>
</div>