2012-09-24 17 views
5

Soy nuevo en django y creo que tengo una pregunta bastante fundamental.Cómo almacenar texto estático en un sitio web con django

Digamos que tengo este tema:

enter image description here

hice un proyecto ya, así que sé un poco acerca de saber cómo construir modelos para el contenido dinámico, pasarlas a puntos de vista y el panel de administración, etc., pero:

Pregunta: en la imagen de arriba Marqué 3 contenedores que incluyen texto. Solo hay una instancia de este texto en todo el sitio web, y no es repetible. Si lo desarrollara solo, lo codificaría, pero ¿qué sucede si desarrollo para un cliente que necesita poder editar esos campos usando el panel de administración?

¿Se supone que debo crear una clase separada que contenga varios campos (digamos 20) para este tipo de contenedores para todo el sitio web, pasar esa clase en una vista (y filtrar con [:1]) para usarla en una plantilla?

Eso es lo único que se me ocurrió. Aunque funcionaría, creo que es una solución terrible.

Respuesta

4

Lo que quiero hacer es escribir un modelo que contiene una TextField para la propaganda de insertar y un CharField para identificarlo, y una custom template tag que dice la propaganda de la base de datos con el argumento de que pase a ella.

class Blurb(models.Model): 
    ident = models.CharField(..., db_index=True) 
    blurb = models.TextField(...) 

PK ident text 
1 main Hey! Do you like this template? This... 

{% load blurb %} 
... 
{% blurb main %} 
+0

va a pasar algún tiempo para tratar de entender cómo funciona esto y el informe de cómo ha ido mal después, gracias :) – Chris

+0

bien, tengo mi cabeza alrededor de ella. ya que la documentación indica: "La aplicación debe contener un directorio templatetags, en el mismo nivel que models.py, views.py, etc." Esto implicaría que voy a poder usar cierta etiqueta de plantilla solo en la plantilla relacionada con la vista de aplicación de certains, ¿verdad? Esto significa que debería crear diferentes clases de "blurb" para cada aplicación ¿verdad? – Chris

+2

Creará una aplicación "blurb" por separado, que contiene un modelo, una biblioteca de etiquetas de plantilla y, opcionalmente, una vista de administrador. –

2

puede tener 1 modelo con un campo de selección que contiene un descriptor para el texto en el modelo.

Algo así como:

class SomeText(models.Model): 
    position = models.CharField(max_length=120, choices=POSITION_DESCRIPTORS) 
    text = models.TextField() 
+0

Voy a leer sobre cómo funcionan las descripciones, y volveré aquí, gracias. – Chris

+0

¿Y cómo debería pasarlo a la plantilla? ¿Debo hacer que la clase SomeText sea global, que esté accesible en todo el sitio web usando TEMPLATE_CONTEXT_PROCESSORS? – Chris

Cuestiones relacionadas