Pregunta

James Bennett 's excelente -formulario de contacto Django pero han golpeado con un obstáculo. Mi página de contacto no sólo contiene la forma, sino también información adicional página plana.

Sin reescribir la vista existente utiliza el formulario de contacto, me gustaría ser capaz de envolver, o cadena, los puntos de vista. Esta manera de que pudiera inyectar algo de información adicional a través del contexto para que tanto el los datos de la página planas forma y podrían ser prestados dentro de la misma plantilla.

He oído mencionar que esto es posible, pero me parece que no puede encontrar la manera de hacer que funcione. He creado mi propio punto de vista envoltura, llamé a la vista del formulario de contacto, y trató de inspeccionar el objeto HttpResponse para un atributo que puedo añadir a, pero me parece que no puede averiguar cuál, en su caso, lo es.

EDIT: James comentó que el último código nuevo se puede encontrar aquí en BitBucket.

¿Fue útil?

Solución

  1. Escribir una envoltura que utiliza la dirección URL para buscar el objeto de página plana adecuada.
  2. A partir de su envoltorio, llame al (y devolver la respuesta por parte de) la vista de formulario de contacto, que pasa a la página plana en el extra_context argumento (que está ahí para que, entre otras cosas, precisamente este tipo de caso de uso).
  3. No hay un tercer paso.

Otros consejos

Hay un procesador de contexto que puede hacer lo que quiera.

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

Puede probablemente añadir sus diversas piezas de "información de la página plana" al contexto.

procesadores de contexto son lo que usted está pensando. Y render_to_response es irrelevante. La pieza necesaria de la información es si la vista utiliza RequestContext o no, ya que es lo que activa procesadores de contexto.

Aparte de esos, no hay manera de vistas "cadena" para añadir al contexto - se puede envolver una vista en otro y alterar los datos que entran en ella, pero no pueden añadir al contexto que camino.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top