Vivez une vie de Haml avec Django1.8 + Jinja2 + hamlish-jinja (Python3)

Ham avec Django a HamlPy, mais Python3 ne le prend probablement pas en charge. En fait, Python3 ne semble pas avoir beaucoup d'options, et j'ai pensé que hamlish-jinja, qui est plutôt mort, est une bonne idée.

hamlish-jinja est juste une syntaxe haml-ish, pas Haml, mais j'ai senti que je pourrais être assez heureux avec Pythonic. Je pense que le coût d'apprentissage est presque nul! https://github.com/Pitmairen/hamlish-jinja

Eh bien, pour cela, je dois utiliser Jinja2 pour le moteur de modèle, mais bon, c'est une histoire étrange à changer pour cela, mais j'aime Jinja2 purement, pas pour Haml, Je change cela en disant que j'aime les sanctuaires et les temples.

Ce que j'ai fait pour utiliser ce qui suit.

Utilisez Jinja2

http://qiita.com/ryu22e/items/e50f8a3fbd6fe836c1b4 La méthode de réglage autour du modèle a considérablement changé depuis la 1.8! !! !! !! De plus, il semble que Jinja2 puisse être facilement introduit! !! !! !! !! Cependant, essayer de faire de petites choses est assez difficile, donc après tout, comme d'habitude, pip django-jinja peut rendre les choses beaucoup plus faciles. La méthode de réglage est également détaillée. Avec match_regex, vous pouvez changer le backend à utiliser en fonction de l'URL. Donc je pense que c'est bien. http://niwinz.github.io/django-jinja/

hamlish-jinja mis

pip install hamlish-jinja

Donc, mon setting.py ressemble à ceci.

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',
            ],  
        },
    },
]

Maintenant, si vous mettez XXX.haml dans votre répertoire de modèles habituel et spécifiez XXX.haml dans la vue, cela fonctionnera normalement.

%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' 

Comme c'est gentil.

Cependant, hamlish-jinja seul n'a pas de mécanisme pour le compiler d'abord dans un modèle jinja, il est donc probablement difficile de le mettre en production tel quel. Par conséquent, j'ai décidé d'utiliser le mécanisme de mise en cache de jinja2 lui-même. Si vous le cachez avec le code octet de jinja, peu importe à quoi ressemble le haml. Devrait être.

Maintenant ça.

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'),
        },
    },
 ...

Les fichiers s'accumuleront dans le répertoire de cache spécifié le cas échéant. C'est bien car l'horodatage du fichier n'est mis à jour que lorsque le haml est mis à jour.

C'est tout.

Recommended Posts

Vivez une vie de Haml avec Django1.8 + Jinja2 + hamlish-jinja (Python3)
Essayez de dessiner une courbe de vie avec python
[Python] Créer un environnement de développement Django avec Docker
Liste de tâches simple créée avec Python + Django
Créez rapidement un environnement Python Django avec IntelliJ
Un mémo sur la création d'une application Django (Python) avec Docker
Faites Django avec CodeStar (Python3.6.8, Django2.2.9)
Python3 + Django ~ Mac ~ avec Apache
Premiers pas avec Python Django (1)
Créer une page d'accueil avec django
Premiers pas avec Python Django (4)
Faites une loterie avec Python
Introduction à Python Django (6)
Premiers pas avec Python Django (5)
Recommandation de django, wagtail ~ Pourquoi développer un site web avec python ~
[Python] Créer un écran pour le code d'état HTTP 403/404/500 avec Django
[Python] Qu'est-ce qu'une instruction with?
Résoudre ABC163 A ~ C avec Python
Faites fonctionner l'imprimante de reçus avec python
Faisons une interface graphique avec python.
Résoudre ABC166 A ~ D avec Python
Déployer l'application Django avec Docker
Créez un environnement virtuel avec Python!
J'ai fait une loterie avec Python.
Créer un environnement virtuel avec Python 3
Résoudre ABC168 A ~ C avec Python
Créer un système de recommandation avec python
Jeu de vie avec Python! (Le jeu de la vie de Conway)
Exécutez python3 Django1.9 avec mod_wsgi (déployer)
Créer une application Web avec Django
Créez une application de scraping avec Python + Django + AWS et modifiez les tâches
Résoudre ABC162 A ~ C avec Python
Créer un filtre avec un modèle django
Résoudre ABC167 A ~ C avec Python
Résoudre ABC158 A ~ C avec Python
Faisons un graphe avec python! !!
[Python] Hériter d'une classe avec des variables de classe
J'ai créé un démon avec Python
Ecrire un script batch avec Python3.5 ~
Créer un téléchargeur de fichiers avec Django
[Pyenv] Construire un environnement python avec ubuntu 16.04
Livre en spirale en Python! Python avec un livre en spirale! (Chapitre 14 ~)
Créer un décorateur de fonction Python avec Class
[Python] Un programme qui crée des escaliers avec #
Lecteur RSS simple réalisé avec Django
Faisons un jeu de shiritori avec Python
Installer Python en tant que Framework avec pyenv
Créez une image factice avec Python + PIL.
J'ai fait un compteur de caractères avec Python
[Python] Dessiner un motif de tourbillon avec une tortue
[Python] Créez un environnement virtuel avec Anaconda
Créons un groupe gratuit avec Python
Un mémo contenant Python2.7 et Python3 dans CentOS
Création d'un environnement Python 3.6 avec Windows + PowerShell
Carte des informations de location sur une carte avec python
Rechercher le labyrinthe avec l'algorithme python A *