Ci sono momenti in cui si desidera utilizzare un modello diverso in base al valore di una intestazione di richiesta HTTP. Ad esempio, diversi nomi di dominio, diversi tipi di browser, o anche la pagina di riferimento. Il progetto dynamicloader consente di specificare un elenco separato di directory in cui Django dovrebbe cercare modelli, sulla base di un valore nell'intestazione della richiesta.
Installazione
1. Installare `` dynamicloader`` nel percorso di Python.
2. Aggiungi `` 'dynamicloader.middleware.RequestMiddleware', `` `nella tua impostazione` MIDDLEWARE_CLASSES``.
3. Aggiungere `` 'dynamicloader.loader.load_template_source', `` in * superiore * dell'impostazione `` TEMPLATE_LOADERS``.
4. Creare una nuova impostazione, `` DYN_TEMPLATE_MAP``, nel seguente formato ::
& Nbsp; & nbsp; & nbsp; DYN_TEMPLATE_MAP = {
& Nbsp; & nbsp; & nbsp; & Nbsp; & nbsp; & nbsp; 'HTTP_HEADER1': {
& Nbsp; & nbsp; & nbsp; & Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; re.compile ('valore1'): ('/ percorso / directory / a', '/ path / to / directory2',),
& Nbsp; & nbsp; & nbsp; & Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; re.compile ('valore2'): ('/ path / to / directory3',)
& Nbsp; & nbsp; & nbsp; & Nbsp; & nbsp; & nbsp; },
& Nbsp; & nbsp; & nbsp; & Nbsp; & nbsp; & nbsp; 'HTTP_HEADER2': {
& Nbsp; & nbsp; & nbsp; & Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; re.compile ('valore1'): ('/ path / to / directory4',)
& Nbsp; & nbsp; & nbsp; & Nbsp; & nbsp; & nbsp; }
& Nbsp; & nbsp; & nbsp; }
Template Mappa Esempi
Domain Name Differenze
Questo esempio consente la sostituzione di alcuni modelli in base al nome del dominio o sottodominio. In questa configurazione, Django cercherà in `` / percorso / per / directory`` prima se il `` HTTP_HOST`` comprende il valore `` www2``.
& Nbsp; & nbsp; & nbsp; DYN_TEMPLATE_MAP = {
& Nbsp; & nbsp; & nbsp; & Nbsp; & nbsp; & nbsp; 'HTTP_HOST': {
& Nbsp; & nbsp; & nbsp; & Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; re.compile ('www2'): ('/ / directory / path',),
& Nbsp; & nbsp; & nbsp; & Nbsp; & nbsp; & nbsp; },
& Nbsp; & nbsp; & nbsp; }
Differenze Browser
Questo esempio consente l'erogazione di differenti modelli (o quelli appena specifici) basate sul browser dell'utente.
& Nbsp; & nbsp; & nbsp; DYN_TEMPLATE_MAP = {
& Nbsp; & nbsp; & nbsp; & Nbsp; & nbsp; & nbsp; 'HTTP_USER_AGENT': {
& Nbsp; & nbsp; & nbsp; & Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; re.compile ('iPhone | iPod'): ('directory / path / to /',),
& Nbsp; & nbsp; & nbsp; & Nbsp; & nbsp; & nbsp; },
& Nbsp; & nbsp; & nbsp; }
Differenze Query String
Questo esempio controlla la stringa di query per decidere quale modello da utilizzare basata su una stringa di query (la roba dopo un '?' In un URL).
DYN_TEMPLATE_MAP = {
& Nbsp; & nbsp; & nbsp; 'QUERY_STRING': {
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; re.compile ('imreallycool = 1'): ('/ a / directory / path',),
& Nbsp; & nbsp; & nbsp; },
}
Requisiti :
- Python
- Django
I commenti non trovato