@KarenG

Как запустить работу более двух view на одном url?

Подскажите, пожалуйста, как можно объединить выполнение нескольких view на одной странице?
Например, нужно добавить на главную страницу контактную форму django-contact-form.readthedocs.org

Код views.py в index:
def index(request):
    args = {}
    args.update(csrf(request))
    return render_to_response('index.html', args)

Код views.py в contact_form:
class ContactFormView(FormView):
    form_class = ContactForm
    template_name = 'contact_form/contact_form.html'

    def form_valid(self, form):
        form.save()
        return super(ContactFormView, self).form_valid(form)

    def get_form_kwargs(self):
        kwargs = super(ContactFormView, self).get_form_kwargs()
        kwargs.update({'request': self.request})
        return kwargs

    def get_success_url(self):
        return reverse('contact_form_sent')


На отдельной странице все работает, но можно ли каким-то образом заставить все работать вместе?
  • Вопрос задан
  • 422 просмотра
Решения вопроса 1
@marazmiki
Укротитель питонов
Если размещение самой формы на главной странице можно понять, то обработку — уже нет. Это неправильно и не нужно этого хотеть.

Сделайте отдельную вьюху для обработки контакт-формы. Пусть она редиректит на главную обратно. Или отправляется аяксом, чтобы пользователь не уходил. Визуально будет то же самое, но правильнее с точки зрения здравого смысла.

Или Вас этот вопрос интересует сугубо теоретически?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы