Вопрос

Я внедряю Джеймс Беннетт'это превосходно django-контактная форма но наткнулись на загвоздку.Моя страница контактов содержит не только форму, но и дополнительную информацию на плоской странице.

Не переписывая существующее представление, используемое контактной формой, я хотел бы иметь возможность объединять или объединять в цепочку представления.Таким образом, я мог бы ввести некоторую дополнительную информацию через контекст, чтобы и форма, и данные плоской страницы могли быть отображены в одном шаблоне.

Я слышал упоминание о том, что это возможно, но, похоже, я не могу понять, как заставить это работать.Я создал свое собственное представление оболочки, названное представлением контактной формы, и попытался проверить объект HttpResponse на предмет атрибута, к которому я могу добавить, но, похоже, не могу понять, какой это атрибут, если он вообще есть.

Редактировать: Джеймс прокомментировал, что последний код может быть найден новым здесь в BitBucket.

Это было полезно?

Решение

  1. Напишите оболочку, которая использует URL-адрес для поиска соответствующего объекта плоской страницы.
  2. Из вашей оболочки вызовите (и верните ответ из) представление контактной формы, передав плоскую страницу в extra_context аргумент (который существует, среди прочего, именно для такого варианта использования).
  3. Третьего шага нет.

Другие советы

Есть контекстный процессор, который может делать то, что вы хотите.

http://docs.djangoproject.com/en/dev/ref/templates/api/

Вероятно, вы можете добавить свои различные фрагменты "информации о плоской странице" в контекст.

Контекстные процессоры - это то, о чем вы думаете.И render_to_response не имеет значения.Требуемая часть информации заключается в том, использует ли представление RequestContext или нет, поскольку именно это активирует контекстные процессоры.

Кроме них, нет способа "связать" представления для добавления в контекст - вы можете обернуть одно представление в другое и изменить вводимые в него данные, но вы не может добавляйте в контекст таким образом.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top