Er zijn momenten waarop je graag een andere sjabloon op basis van de waarde van een HTTP-verzoek header gebruiken. Bijvoorbeeld verschillende domeinnamen, verschillende soorten browser, of zelfs de verwijzende pagina. De dynamicloader project kunt u een aparte lijst van mappen waarin Django moet kijken voor sjablonen, gebaseerd op een waarde in het verzoek header opgeven.
Het installeren
1. Installeer `` dynamicloader`` in uw Python pad.
2. Voeg `` 'dynamicloader.middleware.RequestMiddleware', `` in uw `` MIDDLEWARE_CLASSES`` instelling.
3. Voeg `` 'dynamicloader.loader.load_template_source', `` aan de * top * van uw `` TEMPLATE_LOADERS`` instelling.
4. Maak een nieuwe instelling, `` DYN_TEMPLATE_MAP``, in het 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 ('value1'): ("/ pad / naar / directory ',' / pad / naar / directory2 ',),
& Nbsp; & nbsp; & nbsp; & Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; re.compile ('value2'): ("/ pad / naar / 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 ('value1'): ("/ pad / naar / directory4 ',)
& Nbsp; & nbsp; & nbsp; & Nbsp; & nbsp; & nbsp; }
& Nbsp; & nbsp; & nbsp; }
Template Kaart Voorbeelden
Domeinnaam Verschillen
Dit voorbeeld maakt het doorbreken van bepaalde templates gebaseerd op de domeinnaam of subdomein. In deze opstelling zal Django kijk in `` / pad / naar / directory`` eerste als de `` HTTP_HOST`` omvat de 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 / naar / directory ',),
& Nbsp; & nbsp; & nbsp; & Nbsp; & nbsp; & nbsp; },
& Nbsp; & nbsp; & nbsp; }
Browser Verschillen
Dit voorbeeld maakt de levering van verschillende templates (of op bepaalde degenen) gebaseerd op de browser van de gebruiker.
& 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 / naar / directory ',),
& Nbsp; & nbsp; & nbsp; & Nbsp; & nbsp; & nbsp; },
& Nbsp; & nbsp; & nbsp; }
Query string Verschillen
Dit voorbeeld controleert de query string om te beslissen welke sjabloon te gebruiken op basis van een query string (het spul na een '?' In een URL).
DYN_TEMPLATE_MAP = {
& Nbsp; & nbsp; & nbsp; 'QUERY_STRING': {
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; re.compile ('imreallycool = 1'): ("/ pad / naar / directory ',),
& Nbsp; & nbsp; & nbsp; },
}
Eisen
- Python
- Django
Reacties niet gevonden