Как объединить контроллер 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'),

Может кто знает как объединить в одну функцию и прописать в урлах чтобы и форма обратной связи работала и данные подгружались. Заранее спасибо!


Ответы (0 шт):