2012-09-24 7 views
5

Sono nuovo del django e credo di avere una domanda piuttosto fondamentale.Come memorizzare il testo statico su un sito Web con django

Diciamo che ho questo tema:

enter image description here

ho fatto un progetto già, quindi so un po 'su sapere come costruire modelli per contenuti dinamici, passarli a vista e pannello di amministrazione, ecc, ma:

Domanda: sull'immagine sopra ho contrassegnato 3 contenitori che includono testo. C'è solo un'istanza di questo testo nell'intero sito Web, e non è ripetibile. Se avessi sviluppato per me stesso, farei un hard-code, ma cosa succede se sviluppo per un cliente, chi deve essere in grado di modificare quei campi usando il pannello di amministrazione?

Devo creare una classe separata contenente più campi (diciamo 20) per questo tipo di contenitori per l'intero sito Web, passare tale classe in una vista (e filtrare con [:1]) per utilizzarla in un modello?

Questa è l'unica cosa che mi è venuta in mente. Anche se funzionasse, penso che sia una soluzione terribile.

risposta

4

Quello che vorrei fare è scrivere un modello che contiene un TextField per la fascetta pubblicitaria da inserire e un CharField di identificarlo, e un custom template tag che legge la fascetta dal database dall'argomento si passa ad esso.

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

Andando a trascorrere un po 'di tempo per cercare di capire come funziona e rapporto malato come è andata dopo, grazie :) – Chris

+0

ok, ho ottenuto la mia testa intorno ad esso. poiché la documentazione afferma: "L'app dovrebbe contenere una directory templatetags, allo stesso livello di models.py, views.py, ecc." Ciò implicherebbe che sarò in grado di utilizzare determinati tag modello solo nel modello correlato alla visualizzazione delle app di certe, giusto? Ciò significa che dovrei creare diverse classi "blurb" per ogni app, giusto? – Chris

+2

Si creerà un'app separata "blurb", contenente un modello, una libreria di etichette modello e facoltativamente una visualizzazione admin. –

2

Si potrebbe avere 1 modello con un campo di selezione contenente un descrittore per il testo nel modello.

Qualcosa di simile:

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

Imparerai a leggere come funzionano i descrittori, e sarei tornato qui, grazie! – Chris

+0

E come devo passare al modello? dovrei rendere globale la classe SomeText, che sarebbe accessibile attraverso l'intero sito web usando TEMPLATE_CONTEXT_PROCESSORS? – Chris

Problemi correlati