2009-10-10 13 views
5

Sto lavorando su un progetto Django e vorrei includere una lumaca alla fine dell'URL, come viene fatto qui in stackoverflow.com: http://example.com/object/1/my-slug-generated-from-my-titleMeglio salvare una lumaca sul DB o generare dinamicamente?

L'ID oggetto verrà utilizzato per cercare l'oggetto, non lo slug - e, come stackoverflow.com, lo slug non avrà alcuna importanza quando si ottiene il collegamento (solo per visualizzarlo).

Qestion: c'è uno svantaggio (o un lato positivo) a generare lo slug in modo dinamico, anziché salvarlo come un campo di database effettivo?

Per esempio (non il codice vero e proprio):

class Widget(models.Model): 
    title = models.CharField() 

    def _slug(self): 
     return slugify(self.title) 
    slug = property(_slug) 

Invece di utilizzare un qualcosa di simile a un AutoSlugField (for example)?

Poiché il mio piano è quello di far corrispondere il titolo, non sapevo se avrebbe avuto senso avere un campo duplicato nel database.

Grazie!

risposta

8

Se si utilizza lo slug per scopi decorativi (piuttosto che di ricerca), generarlo dinamicamente è l'idea migliore.

Inoltre, il codice di esempio che hai postato può essere scritto in questo modo:

@property 
def slug(self): 
    return slugify(self.title) 
+0

Grazie per questo suggerimento: sembra sempre meglio! Apprezzalo. – thornomad

1

Il rovescio della medaglia è che si sta generando automaticamente il proiettile ogni volta che si esegue il rendering della pagina. Il vantaggio è che non stai prendendo spazio nel database con un campo che non verrà mai interrogato direttamente.

In entrambi i casi va bene, dipende solo dalle prestazioni rispetto ai requisiti di spazio.

+0

Sì, quelli erano i miei pensieri. Non sapevo se uno di questi metodi fosse _preferred_ ... forse dipende dal server. – thornomad

+0

Entrambi sono trascurabili. 1 milione di lumache, 50 byte ciascuna sarebbero 50 MB. Anche il calcolo sarebbe banale. – Medorator

0

Lo svantaggio principale della generazione di slug in modo dinamico è la mancanza della possibilità di personalizzare gli slug per oggetto, ad es. renderli più brevi e più graziosi. Per i titoli inglesi questo può essere OK, ma per i contenuti non inglesi le lumache generate possono essere brutte.

2

Provare a fare una lumaca con la parola "café" o "浦 安 鉄 筋 家族".

È probabile che assomigli a cacca, a meno che tu non sia davvero ben preparato.

A volte è necessario personalizzare gli slug.

+0

+1, interessante. Penso che tu stia suggerendo che dovrebbe essere immagazzinato (perché potrebbe essere stato personalizzato). – Edmund

+0

Scusa, sì, questo è quello che sto suggerendo. Non ero troppo chiaro ero :) –

+0

Vuoi inserire manualmente i valori anomali? Non è possibile in molti progetti farlo manualmente. Tuttavia, se lo stai facendo in base a determinate regole per personalizzare le lumache, potresti codificare tali regole per generarle dinamicamente. Mi sto perdendo qualcosa? – Medorator

Problemi correlati