2012-08-30 1 views
-1

En PHP PHP peut être le langage de template. Cela semble fonctionner correctement sans avoir besoin d'un système/langage de modèle. Mais, je ne peux pas trouver quelque chose de similaire avec Python pour la langue. Comment faites-vous des choses comme:Comment utilisez-vous le modèle Python natif pour une page Web (pas de frameworks)?

J'ai pris cette d'une autre sans rapport avec SO question:

<?php foreach($dates as $year => $year_content ): ?> 
<h2><?php echo $year ?></h2> 

<?php foreach($year_content['months'] as $months): ?> 
<h3><?php echo $months->month ?> - <?php echo $months->sales ?></h3> 
<?php endforeach; ?> 

<?php endforeach; ?> 

Je ne pouvais pas trouver quelque chose comme ça pour Python « natif » dans la vue Web sans cadre de quelqu'un. Merci.

EDIT: Aucune infraction. Je ne voulais pas de langage de gabarit.

EDIT: Malgré les downvotes, un cas d'espèce est Python 3. While there is a five year expectancy to have 2.x users going to 3.x, tous les langages de template ne prennent pas en charge 3.x. Jinja, par exemple, a un soutien 3.x "expansif". Pourquoi devrais-je l'utiliser? Je ne le ferais pas. Cela me rend dépendant d'eux, où j'aimerais pouvoir utiliser des choses natives, mais hélas, il semble que je ne peux pas.

+0

Vous utilisez une bibliothèque de modèles. Jinja2 est gentil. – geoffspear

+1

Python n'est pas PHP, donc vous ne pouvez pas vous attendre à ce que tout ce qui fonctionne en PHP ait un équivalent exact en Python. Pourquoi ne voulez-vous pas utiliser un package de templates? –

+0

@DavidRobinson First est le contrôle. Je ne veux pas être un esclave du cadre de quelqu'un. – johnny

Répondre

1

Python n'a aucun templating natif dans le sens que PHP a. Vous pouvez utiliser Python comme une extension ISAPI, ce qui vous donnerait une syntaxe comme <% print "foo" %>. Alternativement, vous pouvez écrire des scripts python en pure CGI. Ces routes sont probablement très douloureuses, et vous serez mieux servi à l'aide de frameworks - les frameworks vous donnent l'avantage de l'expérience des autres développeurs ainsi que de lisser les limites de traiter directement avec CGI et HTTP.

Veuillez vous reporter à my answer to a similar question asked earlier.

0

Découvrez Jinja2 http://jinja.pocoo.org/docs/

C'est un langage assez simple templating qui vous permet de créer des modèles de fichiers texte qui peuvent être programmées en interne dans une version limitée de Python.

L'exemple que vous avez posté pourrait ressembler à ceci dans Jinja2:

{% for date in dates: %} 
    <h2>{{ date.year }}</h2> 

    {% for month in date.year_content['months'] %} 
     <h3>{{ month.month }} - {{ month.sales }}</h3> 
    {% endfor %} 
{% endfor %} 
1

Il n'y a pas une solution appropriée dans le monde Python pour le problème, car le mélange logique métier et la présentation est certainement pas une façon Python. Il y avait un vieux projet appelé PSP disponible avec le module mod_python, mais il est certainement mort maintenant pour la raison que j'ai décrite.

Ainsi, les frameworks ou les applications nues WSGI sont deux façons d'aborder le développement web avec Python. Il y a beaucoup de bibliothèques disponibles sur Internet matriçage:

  • Jinja2
  • Mako
  • Caméléon
  • ...

Vous pouvez choisir celui qui correspond le mieux à vos besoins.

Questions connexes