Vraag Beste Python-sjabloonbibliotheek om codegeneratie te vergemakkelijken [gesloten]


In plaats van dat ik de volgende dag (of het hele jaar) over alles lees, zijn er dan suggesties voor het maken van sjablonen die ik nader moet bekijken?


25
2018-03-04 22:38


oorsprong


antwoorden:


Beste suggestie: probeer ze allemaal. Het duurt niet lang.

Mijn favoriet: Jinja2 (met een mijl)

Het heeft een behoorlijke syntaxis, kan hierdoor fouten traceren en is sandboxable.


27
2018-03-04 22:46



Als je bezig bent met het genereren van code, zou je dat kunnen vinden tand nuttig - het is specifiek voor het genereren van code, in plaats van een algemeen toepasselijke vormtaal te zijn.


14
2018-03-05 15:19



De belangrijkste zorg is of je kunt leven met de syntaxis die de sjablonen vereisen. Tweede en derde (afhankelijk van uw applicatiebehoeften) zijn snelheid en gemak van distributie.

Ik heb ze allemaal bekeken, maar de enige syntax die ik kon uitstaan ​​was Jinja. Jinja heeft het voordeel dat het veel Python-constructies ondersteunt, dus het is heel eenvoudig om stukjes functionaliteit aan de sjablonen toe te voegen als dat nodig is, zonder speciale tags te coderen. Het merendeel van wat tags vereist in andere sjabloonsystemen, wordt afgehandeld door macro's in Jinja.

Natuurlijk, als je op zoek bent naar iets dat gemakkelijk en snel is, is het moeilijk om het te verslaan Python templating API in de kerntaal.


9
2018-03-04 22:50



Update: Kid lijkt te zijn geslaagd door Genshi.

Ik heb Kid gebruikt, wat volgens mij een van de oudere systemen is. Ik vond het extreem solide, stabiel en betrouwbaar. Het is tag-gebaseerd, dus het is fijn om met XML / HTML te werken. Het is een beetje interessant dat sjabloonfuncties worden uitgevoerd als HTML-kenmerken, niet als speciale blokken, d.w.z. {% ...%}. Sommige aspecten daarvan (met name de manier waarop het 'omvat') kunnen echter behoorlijk vervelend worden. Het lijkt ook niet actief of helemaal niet meer te worden ontwikkeld.

Het is de moeite waard om eens te kijken of je iets wilt dat al een tijdje bestaat en behoorlijk stabiel is geworden. Als je iets recenters wilt, heb ik goede dingen gehoord over zowel Genshi als Jinja.


2
2018-03-05 03:50



ik hou van clearsilver omdat het werkt met verschillende talen en strikt de scheiding tussen gegevens en presentatie afdwingt. Ik heb eerder Cheetah gebruikt en hoewel het best leuk is, vond ik het niet leuk om te werken met iets dat soms leek op een beperkte vorm van Python.


1
2018-03-04 23:01



Als je met X [HT] ML werkt, is een van de op tags gebaseerde template-systemen die je kunnen verlaten met goedgevormde sjablonen een goede zet. ik gebruik PXTL, FWIW. (Het kan andere indelingen produceren, maar als uw nadruk geen XML of HTML is, zou het geen verstandige keuze zijn.)

Ik heb een grote hekel aan template-systemen die claimen 'je te helpen bedrijfslogica en -presentatie te scheiden' door uitdrukkingen te beperken tot hun eigen Little Language. Ze lijken niet te begrijpen dat er zoiets bestaat als "presentatielogica", en het kan soms ingewikkeld genoeg worden om een ​​echte taal zoals Python nodig te hebben om het uit te voeren. Als je je presentatielogica in de app gooit met de bedrijfslogica dus geen overwinning. Voorkom!

(De gelimiteerde uitdrukking aparte mini-taalbenadering klopte enigszins in JSP's 'EL', omdat Java te irritant veelzeggender is om te gebruiken in een sjablonerende bibliotheek. Maar we hebben Python! Het is perfect voor het schrijven van uitdrukkingen in sjablonen zoals het is; functionaliteit uit en waardoor de gebruiker een nieuwe taal leert, krijgt u niets.)


1
2018-03-04 23:45



Als je wilt zeer lichtgewicht optie, probeer templete. Het is maar net 80 regels code in één module. Even kijken hier en hier (het werd gepubliceerd in een blog). Ik denk dat het een slimme en zeer gerichte oplossing is, als de functies voor u voldoende zijn.


1
2018-03-05 13:00