Daar is tye wanneer jy wil 'n ander sjabloon gebaseer op die waarde van 'n HTTP-versoek kop te gebruik. Byvoorbeeld, verskillende domein name, verskillende tipes blaaiers, of selfs na die vorige bladsy. Die dynamicloader projek kan jy 'n aparte lys van gidse waarin Django moet kyk vir templates, gebaseer op 'n waarde in die versoek kop te spesifiseer.
Die installering
1. Installeer `` dynamicloader`` in jou Python pad.
2. Voeg `` 'dynamicloader.middleware.RequestMiddleware', `` in jou `` MIDDLEWARE_CLASSES`` omgewing.
3. Voeg `` 'dynamicloader.loader.load_template_source', `` by die * Top * van jou `` TEMPLATE_LOADERS`` omgewing.
4. Skep 'n nuwe omgewing, `` DYN_TEMPLATE_MAP``, in die volgende formaat ::
& 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 ('waarde1'): ('/ pad / na / directory', '/ pad / na / directory2',),
& Nbsp; & nbsp; & nbsp; & Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; re.compile ('value2'): ('/ pad / na / 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 ('waarde1'): ('/ pad / na / directory4',)
& Nbsp; & nbsp; & nbsp; & Nbsp; & nbsp; & nbsp; }
& Nbsp; & nbsp; & nbsp; }
Sjabloon Map Voorbeelde
Domain Naam Verskille
Hierdie voorbeeld kan die ignoreer van sekere templates gebaseer op die domein naam of subdomein. In hierdie opstelling sal Django kyk in `` / pad / na / directory`` eerste as die `` HTTP_HOST`` sluit die waarde `` 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'): ('/ pad / na / directory "),
& Nbsp; & nbsp; & nbsp; & Nbsp; & nbsp; & nbsp; },
& Nbsp; & nbsp; & nbsp; }
Leser Verskille
Hierdie voorbeeld kan die lewering van verskillende templates (of net spesifieke kinders) gebaseer op die gebruiker se webblaaier.
& 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'): ('/ pad / na / directory "),
& Nbsp; & nbsp; & nbsp; & Nbsp; & nbsp; & nbsp; },
& Nbsp; & nbsp; & nbsp; }
Query String Verskille
Hierdie voorbeeld gaan die navraag string om te besluit watter sjabloon te gebruik wat gebaseer is op 'n navraag string (die dinge na 'n '? "In 'n URL).
DYN_TEMPLATE_MAP = {
& Nbsp; & nbsp; & nbsp; 'QUERY_STRING': {
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; re.compile ('imreallycool = 1'): ('/ pad / na / directory "),
& Nbsp; & nbsp; & nbsp; },
}
Vereistes :
- Python
- Django
Kommentaar nie gevind