Qualche inconveniente o trucchetto nell'usare i modelli Jinja2 in Django?


3 Answers

Io uso Jinja2 in alcuni dei miei progetti e amo l'espressività extra che mi dà. Posso mantenere separate la logica di presentazione e la logica dell'applicazione, ma non devo piegarmi all'indietro per chiamare in una funzione / metodo che ho progettato specificamente per il mio livello di presentazione.

Oltre a ciò che è già stato elencato da altri poster, ecco alcune cose che ho trovato:

  • L'app di amministrazione è strettamente accoppiata ai modelli di Django
  • Le viste e i decoratori predefiniti forniti con l'app Auth (e altrove) sono accoppiati ai template Django, quindi potresti dover duplicare lo sforzo se vuoi usare i tuoi modelli Jinja2 per login / logout / etc

Comportamentalmente, i modelli di Django sfuggiranno all'uscita di default mentre Jinja2 non lo farà. Penso che entrambi gli approcci abbiano i propri meriti, ma bisogna tenerlo a mente se si passa da uno all'altro.

Question

Dopo aver letto la documentazione di Jinja2, sono interessato a utilizzarlo in futuri progetti Django. Tuttavia, mi chiedo se qualcuno ha riscontrato qualche inconveniente o trucchetto quando usa i modelli Jinja2 con Django? Se sì, come hai lavorato intorno a loro?

Non mi dispiacerebbe sentir parlare di esperienze positive, solo per ottenere una buona sezione del meglio e del peggio di Jinja2.




Estendere Jinja2 è molto più difficile del sistema di template Django (sto parlando di templatetags). Mentre la maggior parte delle funzionalità di tag di inclusione può essere ottenuta utilizzando macro in Jinja (sembrano addirittura più appropriate), la scrittura di tag più complicati è davvero difficile in Jinja (vedi i documenti per te).

Oltre a questo, l'unico ostacolo sono le abitudini basate su Django ...;)




A partire da aprile 2015, Django 1.8 supporta i modelli di rendering con più motori all'interno dello stesso progetto e ha il supporto integrato per Jinja2 . Quindi non deve più essere una decisione tutto o niente.

(Anche se questo non sta rispondendo direttamente alla domanda, dal momento che questo era il caso in precedenza ho pensato che meritasse più di un semplice commento).




Per me, la cosa più fastidiosa dell'uso di Jinja2 in Django è che non sarai in grado di utilizzare alcune app di Django quando vengono con i loro modelli o tag modello (ad esempio, django-uni-forms).

Questo può essere frustrante alcune volte, quando trovi un'app fantastica che risolve i tuoi problemi ma non puoi usarla perché non è compatibile con Jinja2.

A proposito, sembra che Armin Ronacher (l'autore di Jinja2) stia lavorando a un nuovo backend di template engine che siederà dietro a Jinja2 e Django, sostituendo l'infrastruttura attuale ma mantenendo la retrocompatibilità. https://www.djangoproject.com/weblog/2011/apr/25/gsoc/




Related