web-dev-qa-db-fra.com

Django: Passer à Jinja2?

J'ai quelques petits (500 ou 600 lignes de code de modèle) Django sites, et j'aimerais les migrer vers Jinja2… Mais j'aimerais avoir une idée de combien de travail ça va être. Donc, en général, combien de travail cela coûte de migrer un petit Django site vers Jinja2? Et cela en vaut-il la peine?

55
David Wolever

Bien que ce soit juste ma propre expérience, j'ai trouvé que la conversion de Django vers Jinja2 valait la peine pour les raisons suivantes:

  1. La conception et la mise en œuvre de Jinja2 m'ont semblé plus intuitives, à la fois en tant que développeur de logiciels et concepteur de modèles;
  2. Jinja2 est plus extensible (au moins dans la façon dont j'ai cherché à étendre mon moteur de modèle);
  3. Jinja2 est plus flexible pour permettre l'exécution de code logique (mais il vous donne assez de corde pour vous accrocher);
  4. Jinja2 est considéré comme beaucoup plus rapide (même si je n'ai pas fait de tests de performance, cela est toujours sujet à débat en fonction des tests utilisés, et en tout cas largement non pertinent dans le temps d'attente total pour une requête qui doit faire des recherches de base de données);
  5. Jinja2 donne une sortie d'erreur beaucoup plus utile que Django (c'est-à-dire trace le numéro de ligne dans le modèle où l'erreur s'est produite).  Edit : Selon le commentaire de Dor, Django donne des messages d'erreur utiles qui pointent vers la ligne et le contexte d'un problème, un peu comme Jinja2.

Si vous n'avez eu aucun problème avec le moteur de gabarit de Django, celui de Jinja2 devrait être relativement intuitif, peut-être un peu plus raffiné (ou du moins pour moi, en tout cas). De plus, j'ai trouvé le projet Coffin bien écrit et raisonnablement utile lors de la conversion de Django vers Jinja2 - à la fois pour son utilisation et à titre d'exemple de la façon d'étendre Jinja2.

Cela étant dit, le moteur de modèle de Django est solide et tout à fait capable pour la plupart des tâches. Je pense qu'il est en cours d'amélioration dans la prochaine révision de Django, et il y a beaucoup d'efforts à ajouter à ses capacités par un certain nombre de développeurs dédiés. En conséquence, il n'y a aucun souci à ce qu'il ne soit pas pris en charge dans un avenir proche à moyen terme.

Encore une fois, c'est juste mon expérience, pour ce que ça vaut - j'espère que cela vous sera utile.

52
Brian M. Hunt

Il y a aussi Django-jinja. https://github.com/niwibe/Django-jinja

Nouveau projet et Nice. http://niwibe.github.io/Django-jinja/

Il prétend être une intégration jinja2 simple et non obstructive avec Django.

4
Arthur Alvim

D'après ce que vous avez dit, il ne vaut peut-être pas la peine de migrer vers Jinja2. Il existe des filtres dans les modèles Django qui pourraient vous aider à effectuer des opérations mathématiques.

Concernant les opérations de liste, de quoi parlez-vous exactement? Si vous souhaitez qu'une opération de liste particulière soit prise en charge dans le modèle, écrivez un filtre personnalisé .

Il existe également des tiers tiers filtres mathématiques pour Django .

Si vous y pensez, c'est par conception que les modèles Django ne contiennent pas trop de "constructions de programmation". Les modèles HTML devraient être tels ...

3
Srikar Appalaraju

Deux projets qui essaient d'intégrer Jinja dans Django avec des étapes d'intégration simples et joliment accroché avec Django -

  1. Cercueil
  2. Chouwa

Je les intègre tout de suite pour expérimenter s'ils fonctionnent aussi avec Django contrib apps comme Django Admin. Mais je pense que ce sera disponible pour les applications de projet et Django système de modèle par défaut sera utilisé dans les applications internes comme Admin.

2
Ravi Kumar