Как же тогда эту форму (да и любую другую) вставлять в любом месте сайта на любой странице?
Пока приходит в голову создавать ajax запрос и полученный код вставлять в дерево.
Или создавать свой тег, который так же будет вставлять результат формы.
И как в таком случаи вставлять ту же форму обратной связи на страницу flatpages?
Адрес обработчика формы и адрес страницы, на которой форма расположена, друг от друга не зависят. Если откроете DevTools вашего браузера, то сможете легко убедиться, что атрибут action формы ответа под вашим вопросом не равен адресу страницы вашего вопроса.
alternativshik, т.е. просто прописать каждый элемент формы? Хорошо, это понял, как вариант годится.
А использовать {{ form.as_p }} в любом месте, как понимаю, уже не получится?
Сергей Горностаев, именно это прописано в шаблоне данной формы и данные {{ form.as_p }} можно получить только по адресу "/contact". Если же это вставить на страницу с другим адресом, то мы не получим поля формы. Вот в этом то и вопрос.
alternativshik, значит, если я хочу какую-либо форму показать на какой-либо странице, то во вьюхе этой странице обязательно добавлять рендер формы и никак иначе?
Александр Виноградов, ну а как в шаблон еще вывести какие-то данные?..
Ну, можно еще написать свой контекстный процессор, который везде добавит нужные данные.
alternativshik, я сделал отдельное приложение contact.
Вот и подумал, может надо писать свой тег, который можно вставить в любое место сайта, и он там выведет форму?
Что-то типа {{ contact 1 }}.
Александр Виноградов, архитектурно правильнее, чтобы представление формировало контекст своего шаблона, а значит было в курсе всех его элементов, в том числе форм. Правильная реализация такого подхода - это иерархия наследования CBV, каждое из которых вносит в контекст свою часть. Обходные варианты - это либо ручное написание разметки в шаблоне, либо использование процессоров контекста.