Sto sviluppando un sito Web utilizzando Django come back-end e voglio consentire al cliente di aggiungere nuove pagine utilizzando l'interfaccia di amministrazione, quindi inserisce un titolo di pagina, un alias di pagina che viene utilizzato per gli URL più belli, e sceglie se vuole contenuti statici o una struttura basata su articoli.URL dinamici Django
Il mio approccio è il seguente: Ho creato un'applicazione chiamata sitemanager
costituita dal modello di pagina sopra descritto e un processore di contesto che aggiunge le pagine al contesto dei miei modelli (per i menu, ecc.) E funziona bene.
Naturalmente, ho anche bisogno di agganciarlo nel mio url file, ma qui è dove inizia il problema: posso, grazie alla struttura divinatorio di Django, recuperare il modello Page
all'interno urls.py
, e generare il mio modello di URL di conseguenza, e lo fa, ma Django sembra archiviare quel file (che di solito ha senso), quindi le modifiche avverranno solo dopo il riavvio del server. Questo ovviamente non è accettabile.
La mia prima idea sarebbe in qualche modo portare l'applicazione di amministrazione a reimpostare la cache dell'URL se vengono aggiunte nuove pagine o eliminate, o gli alias vengono modificati (e solo allora, perché la memorizzazione nella cache è generalmente una buona cosa), ma non ho idea di come iniziare da lì.
O forse c'è anche una soluzione più semplice che non vedo al momento?
La parte rilevante della mia urls.py
sembra sostanzialmente in questo modo:
from sitemanager.models import Page
static_pages = Page.objects.filter(static=True)
article_pages = Page.objects.filter(static=False)
for page in static_pages:
pattern = r'^/'+page.alias+'/$'
urlpatterns += patterns('',
url(pattern, 'views.static_page',
{ 'active': page }
)
)
# Pretty much the same for the article pages,
# but with includes of another app
spero Non ho fatto troppi errori, mentre nudo che il codice nella mia testa!