Es gibt Zeiten, wenn Sie möchten, um eine andere Vorlage basierend auf dem Wert eines HTTP-Request-Header zu verwenden. Zum Beispiel können verschiedene Domain-Name, verschiedene Browsertypen oder auch die verweisende Seite. Die dynamicloader Projekt ermöglicht es Ihnen, eine separate Liste von Verzeichnissen, in denen Django sollte für Vorlagen suchen, basierend auf einem Wert im Request-Header angeben.
Installation
1. Installieren Sie `` dynamicloader`` in Ihrer Python-Pfad.
2. Fügen Sie `` 'dynamicloader.middleware.RequestMiddleware', `` in Ihre `` MIDDLEWARE_CLASSES`` Einstellung.
3. Fügen Sie `` 'dynamicloader.loader.load_template_source', `` am * top * Ihre `` TEMPLATE_LOADERS`` Einstellung.
4. Erstellen Sie eine neue Einstellung, `` DYN_TEMPLATE_MAP``, im folgenden Format ::
& 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'): ("/ path / to / directory", "/ path / to / directory2 ',),
& Nbsp; & nbsp; & nbsp; & Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; re.compile ('Wert2'): ("/ 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 ('value1'): ("/ path / to / Directory4 ',)
& Nbsp; & nbsp; & nbsp; & Nbsp; & nbsp; & nbsp; }
& Nbsp; & nbsp; & nbsp; }
Template Map Beispiele
Domain Name Unterschiede
Dieses Beispiel ermöglicht die Übersteuerung bestimmter Vorlagen basierend auf dem Domain-Namen oder Subdomain. In dieser Konfiguration wird Django in `/ Weg aussehen / to / directory`` zuerst, wenn die` `HTTP_HOST`` enthält den Wert` `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): (" / path / to / directory "),
& Nbsp; & nbsp; & nbsp; & Nbsp; & nbsp; & nbsp; },
& Nbsp; & nbsp; & nbsp; }
Browser-Unterschiede
Dieses Beispiel ermöglicht die Abgabe von verschiedenen Vorlagen (oder nur spezifisch sind), basierend auf dem Browser des Benutzers.
& 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"): ("/ path / to / directory"),
& Nbsp; & nbsp; & nbsp; & Nbsp; & nbsp; & nbsp; },
& Nbsp; & nbsp; & nbsp; }
Abfragezeichenfolge Unterschiede
Dieses Beispiel überprüft die Abfrage-String, zu entscheiden, welche Vorlage auf einem Query-String (der Stoff nach einem "?" In einer URL) auf Basis verwenden.
DYN_TEMPLATE_MAP = {
& Nbsp; & nbsp; & nbsp; "QUERY_STRING": {
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; re.compile ('imreallycool = 1') ('/ path / to / directory "),
& Nbsp; & nbsp; & nbsp; },
}
Anforderungen :
- Python
- Django
Kommentare nicht gefunden