¿Cómo puedo poner un bloque de contenido generado dinámicamente en una django plantilla?

StackOverflow https://stackoverflow.com/questions/1024220

  •  06-07-2019
  •  | 
  •  

Pregunta

Quiero incluir cosas como el estado de twitter o delicious etiquetas, en mis plantillas de django.

Estas cosas son dinámicas, sin embargo, regular.¿Cómo podría hacerse esto?

¿Fue útil?

Solución

Hay un número de maneras de manejar esto, así que usted puede elegir un método que mejor se adapte a su propio estilo personal o requisitos:

  1. Plantilla de la variable contexto de:como contestada por Alex usted puede poner su contenido en un contexto variable que se incluye en el contexto de cada plantilla creada por cada vista.Django incluso proporciona un mecanismo para hacer esto automáticamente, llamado contexto del procesador.Pros:muy sencillo.Contras:no actualizar dinámicamente el contenido nuevo en los exploradores de los clientes.

  2. AJAX carga dinámica:como se ha mencionado por Alex y Dave usted puede cargar de forma dinámica el contenido mediante AJAX métodos.Como un ejemplo del uso de jQuery, tendría que colocar un marcador de posición en la plantilla de algo como <div id="twitterfeed"></div> y, a continuación, en un bloque de javascript en la plantilla de poner $("#twitterfeed").load("{% url twitterfeed %}"); donde twitterfeed es una dirección url denominada así en su urls.py.Pros:dinámica de actualización de los navegadores.Contras:puede ser difícil si usted no sabe Javascript.

  3. La inclusión de la etiqueta de:Django provee un tipo de etiqueta de plantilla se llama un la inclusión de la etiqueta de, que es básicamente una plantilla personalizada etiqueta que puede representar contenido dinámico.En una manera que es similar a un contexto variable, excepto el código para generar el contenido solo será llamado cuando se utiliza la plantilla personalizada etiqueta en la plantilla, en lugar de ser llamado para cada vista.Otro beneficio es que el contenido es generado a partir de una plantilla propia.Usted puede hacer esto con un contexto normal de la variable de curso, pero no es tan limpio (en mi humilde opinión) como el uso de una inclusión de la etiqueta.Pros:muy sencillo, limpio.Contras:no actualizar dinámicamente el contenido nuevo en los exploradores de los clientes.

Otros consejos

El enfoque más sencillo es utilizar {{ mycontent }} en su plantilla (donde desea que el contenido generado dinámicamente a aparecer) y poner la correspondencia entre mycontent y su valor en el contexto de usar para renderizar la plantilla, es decir, la mayor parte fundamental de django es de plantillas.

Si lo que quieres decir es que quieres soporte de Ajax el cual Javascript en la página continuamente se actualiza el contenido de tales de acuerdo a lo que el servidor quiere que sea en cualquier momento dado, le sugiero buscar en dojango, el Dojo/Django proyecto de integración -- todavía no está completamente maduro como cada uno de Dojo y Django son por su propia cuenta (no la versión 0.4 aún), pero ya es usable y útil.

Una técnica común es dejar un marcador de posición div en el contenido generado, luego completar el div en el lado del cliente a través de una llamada AJAX desde Javascript que se incluye en la página.

Eso le brinda el beneficio de tener una página principal almacenable en caché (carga rápida), con bits dinámicos separados. Dependiendo de cuán en vivo desee los bits dinámicos, incluso puede almacenarlos en caché para duraciones más cortas.

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