Lebe ein Haml-Leben mit Django1.8 + Jinja2 + hamlish-jinja (Python3)

Ham mit Django hat HamlPy, aber Python3 unterstützt es wahrscheinlich nicht. Tatsächlich scheint Python3 nicht viele Optionen zu haben, und ich fand, dass Hamlish-Jinja, das ziemlich tot ist, eine gute Idee ist.

hamlish-jinja ist nur eine haml-ish-Syntax, nicht Haml, aber ich hatte das Gefühl, dass ich mit Pythonic ziemlich zufrieden sein könnte. Ich denke, die Lernkosten sind fast 0! https://github.com/Pitmairen/hamlish-jinja

Nun, um das zu tun, muss ich Jinja2 für die Template-Engine verwenden, aber nun, es ist eine seltsame Geschichte, das zu ändern, aber ich mag Jinja2 nur, nicht für Haml, Ich ändere es, indem ich sage, dass ich Schreine und Tempel mag.

Was ich getan habe, um Folgendes zu verwenden.

Verwenden Sie Jinja2

http://qiita.com/ryu22e/items/e50f8a3fbd6fe836c1b4 Die Einstellungsmethode um die Vorlage hat sich seit 1.8 erheblich geändert! !! !! !! Es scheint auch, dass Jinja2 leicht eingeführt werden kann! !! !! !! !! Der Versuch, kleine Dinge zu tun, ist jedoch ziemlich schwierig, so dass pip django-jinja es wie immer viel einfacher machen kann. Die Einstellmethode ist ebenfalls detailliert. Mit match_regex können Sie abhängig von der URL wechseln, welches Backend verwendet werden soll. Also ich denke das ist in Ordnung. http://niwinz.github.io/django-jinja/

Hamlish-Jinja setzen

pip install hamlish-jinja

So sieht meine Einstellung.py so aus.

from django_jinja.builtins import DEFAULT_EXTENSIONS
from hamlish_jinja import HamlishExtension

TEMPLATES = [ 
    {   
        "BACKEND": "django_jinja.backend.Jinja2",
        'DIRS': [], 
        'APP_DIRS': True,
        'OPTIONS': {
            'match_regex': r"^(?!admin/).*",
            'match_extension': ".haml",
            'extensions': DEFAULT_EXTENSIONS + [HamlishExtension]
        },  
    },  
    {   
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [], 
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],  
        },
    },
]

Wenn Sie nun XXX.haml in Ihr übliches Vorlagenverzeichnis einfügen und XXX.haml in der Ansicht angeben, funktioniert dies normal.

%html
  %head
    %meta charset='utf-8'
    %meta name='viewport' content='width=device-width'
    %meta name='format-detection' content='telephone=no'
    %meta name='description' content={{description}}
    %meta name='keywords' content={{keywords}}
    %title << {{title}}
    %script type='text/javascript' src='http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js' 

Wie schön.

Hamlish-jinja allein hat jedoch keinen Mechanismus, um es zuerst in eine jinja-Vorlage zu kompilieren, so dass es wahrscheinlich schwierig ist, es so wie es ist in Produktion zu bringen. Aus diesem Grund habe ich mich für den Caching-Mechanismus von jinja2 entschieden. Wenn Sie es mit Jinjas Bytecode zwischenspeichern, spielt es keine Rolle, wie haml aussieht. Sollte sein.

Jetzt das.

from jinja2 import FileSystemBytecodeCache
...
...
TEMPLATES = [
    {
        "BACKEND": "django_jinja.backend.Jinja2",
        'DIRS': [],            
        'APP_DIRS': True,      
        'OPTIONS': {           
            'match_regex': r"^(?!admin/).*",
            'match_extension': ".haml", 
            'extensions': DEFAULT_EXTENSIONS + [HamlishExtension],
            'bytecode_cache': FileSystemBytecodeCache(directory=os.path.join(BASE_DIR, 'project/cache'), pattern='%s.cache'),
        },
    },
 ...

Dateien werden entsprechend im angegebenen Cache-Verzeichnis gespeichert. Es ist gut, weil der Zeitstempel der Datei nur aktualisiert wird, wenn haml aktualisiert wird.

Das ist es.

Recommended Posts

Lebe ein Haml-Leben mit Django1.8 + Jinja2 + hamlish-jinja (Python3)
Versuchen Sie, mit Python eine Lebenskurve zu zeichnen
[Python] Erstellen Sie mit Docker eine Django-Entwicklungsumgebung
Einfache Aufgabenliste, erstellt mit Python + Django
Erstellen Sie mit IntelliJ schnell eine Python Django-Umgebung
Ein Memo zum Erstellen einer Django (Python) -Anwendung mit Docker
Mach Django mit CodeStar (Python3.6.8, Django2.2.9)
Python3 + Django ~ Mac ~ mit Apache
Erste Schritte mit Python Django (1)
Erstellen Sie eine Homepage mit Django
Erste Schritte mit Python Django (4)
Machen Sie eine Lotterie mit Python
Einführung in Python Django (6)
Erste Schritte mit Python Django (5)
Empfehlung von Django, Bachstelze ~ Warum eine Website mit Python entwickeln ~
[Python] Erstellen Sie mit Django einen Bildschirm für den HTTP-Statuscode 403/404/500
[Python] Was ist eine with-Anweisung?
Löse ABC163 A ~ C mit Python
Bedienen Sie den Belegdrucker mit Python
Lassen Sie uns eine GUI mit Python erstellen.
Löse ABC166 A ~ D mit Python
Stellen Sie die Django-Anwendung mit Docker bereit
Erstellen Sie eine virtuelle Umgebung mit Python!
Ich habe mit Python eine Lotterie gemacht.
Erstellen einer virtuellen Umgebung mit Python 3
Löse ABC168 A ~ C mit Python
Erstellen Sie ein Empfehlungssystem mit Python
Lebensspiel mit Python! (Conways Spiel des Lebens)
Führen Sie python3 Django1.9 mit mod_wsgi aus (deploy)
Erstellen Sie eine Webanwendung mit Django
Erstellen Sie mit Python + Django + AWS eine Scraping-App und wechseln Sie Jobs
Löse ABC162 A ~ C mit Python
Machen Sie einen Filter mit einer Django-Vorlage
Löse ABC167 A ~ C mit Python
Löse ABC158 A ~ C mit Python
Lassen Sie uns ein Diagramm mit Python erstellen! !!
[Python] Erbt eine Klasse mit Klassenvariablen
Ich habe mit Python einen Daemon erstellt
Schreiben Sie ein Batch-Skript mit Python3.5 ~
Erstellen Sie mit Django einen Datei-Uploader
[Pyenv] Erstellen einer Python-Umgebung mit Ubuntu 16.04
Spiralbuch in Python! Python mit einem Spiralbuch! (Kapitel 14 ~)
Erstellen Sie mit Class einen Python-Funktionsdekorator
[Python] Ein Programm, das Treppen mit # erstellt
Einfacher RSS-Reader mit Django
Lassen Sie uns mit Python ein Shiritori-Spiel machen
Installieren Sie Python als Framework mit pyenv
Erstellen Sie mit Python + PIL ein Dummy-Image.
Ich habe mit Python einen Zeichenzähler erstellt
[Python] Zeichnen eines Wirbelmusters mit einer Schildkröte
[Python] Erstellen Sie mit Anaconda eine virtuelle Umgebung
Erstellen wir mit Python eine kostenlose Gruppe
Ein Memo mit Python2.7 und Python3 in CentOS
Erstellen einer Python 3.6-Umgebung mit Windows + PowerShell
Kartenmietinformationen auf einer Karte mit Python
Durchsuche das Labyrinth mit dem Python A * -Algorithmus