Как объединить контроллер class и функцию для вывода на одну страницу
Просьба помочь, не могу никак разобраться. Есть функция вывода на главную страницу
def index(request):
# Главная страница
index = Index.objects.filter(id=1)
product = Product.objects.order_by('-date_added')
return render(request, 'shop/index.html', context={'index': index, 'product': product})
Так же на главную страницу нужно добавить форму обратной связи
from django.views.generic import CreateView
from .models import Contact
from django.urls import reverse_lazy
from django.http import HttpResponse
from django.core.mail import send_mail
from .forms import ContactForm
class ContactCreate(CreateView):
model = Contact
# fields = ["first_name", "email"]
success_url = reverse_lazy('shop:index')
form_class = ContactForm
def form_valid(self, form):
# Формируем сообщение для отправки
data = form.data
subject = f'Сообщение с формы от {data["first_name"]} Почта отправителя: {data["email"]}'
email(subject, data['email'])
return super().form_valid(form)
# Функция отправки сообщения
def email(subject, content):
send_mail(subject,
content,
'smtp.gmail.com',
['[email protected]', '[email protected]']
)
# Функция, которая вернет сообщение в случае успешного заполнения формы
def success(request):
return HttpResponse('Письмо отправлено!')
В urls.py прописано контроллер из функции.
path('', index, name='index'),
Может кто знает как объединить в одну функцию и прописать в урлах чтобы и форма обратной связи работала и данные подгружались. Заранее спасибо!