« Programmation Python/Applications web » : différence entre les versions

Contenu supprimé Contenu ajouté
Split vers le doublon partiel Programmation Python/L'interface CGI
DannyS712 (discussion | contributions)
m <source> -> <syntaxhighlight> (phab:T237267)
Ligne 69 :
Comme tous les autres éléments du site (fichiers ''.html'', ''.gif'', ''.jpeg'', etc.), ces scripts Python devront être placés dans le répertoire racine<ref>...ou bien dans des sous-répertoires du répertoire racine, comme il est d'usage de le faire lorsque l'on cherche à structurer convenablement le site en construction. Il vous suffira dans ce cas d'inclure le nom de ces sous-répertoires dans les adresses correspondantes.</ref>. Vous pouvez tout de suite effectuer un test élémentaire en rédigeant un petit script d'une seule ligne, tel que :
 
<sourcesyntaxhighlight lang="python">
print "Bienvenue sur mon site web !"
</syntaxhighlight>
</source>
 
Sauvegardez ce script sous le nom ''hello.py'' dans le répertoire racine, puis entrez l'adresse : ''http://localhost/hello.py'' (ou même : ''http://localhost/hello'' - l'extension ''.py'' peut être omise) dans votre navigateur. Vous devriez y voir apparaître le message. Cela signifie donc que dans l'environnement Karrigell, la sortie de l'instruction print est redirigée vers la fenêtre du navigateur client, plutôt que la console (ou la fenêtre de terminal) du serveur.
Ligne 77 :
Étant donné que l'affichage a lieu dans une fenêtre de navigateur web, vous pouvez utiliser toutes les ressources de la syntaxe HTML afin d'obtenir un formatage déterminé. Vous pouvez par exemple afficher un petit tableau de 2 lignes et 3 colonnes, avec les instructions suivantes :
 
<sourcesyntaxhighlight lang="python">
print """
<TABLE BORDER="1" CELLPADDING="5">
Ligne 84 :
</TABLE>
"""
</syntaxhighlight>
</source>
 
Rappelons que la balise <code>TABLE</code> définit un tableau. Son option <code>BORDER</code> spécifie la largeur des bordures de séparation, et <code>CELLPADDING</code> l'écart à réserver autour du contenu des cellules. Les Balises <code>TR</code> et <code>TD</code> (''Table Row'' et ''Table Data'') définissent les lignes et les cellules du tableau.
Ligne 92 :
[[Image:Apprendre à programmer avec Python 65.png|center|tableau en html généré par un script python]]
 
<sourcesyntaxhighlight lang="python" line>
from math import sin, cos, tan, pi
 
Ligne 108 :
print "</TABLE>"
</syntaxhighlight>
</source>
 
;Commentaires
Ligne 138 :
Pour chaque page dans laquelle vous voulez consulter ou modifier une information de session, vous commencez par créer un objet de la classe <code>Session()</code> :
 
<sourcesyntaxhighlight lang="python">
objet_session = Session()
</syntaxhighlight>
</source>
 
Si vous êtes au début de la session, Karrigell génère un identifiant unique, le place dans un cookie et envoie celui-ci au navigateur web. Vous pouvez alors ajouter un nombre quelconque d'attributs à l'objet-session :
 
<sourcesyntaxhighlight lang="python">
objet_session.nom = "Jean Dupont"
</syntaxhighlight>
</source>
 
Dans les autres pages, vous procédez de la même manière, mais l'objet produit dans ce cas par la classe <code>Session()</code> n'est pas nouveau : c'est l'objet créé en début de session, retrouvé en interne par le serveur grâce à son identifiant relu dans le cookie. Vous pouvez accéder aux valeurs de ses attributs, et aussi en ajouter de nouveaux :
 
<sourcesyntaxhighlight lang="python">
obj_sess = Session() # récupérer l'objet indiqué par le cookie
nom = obj_sess.nom # retrouver la valeur d'un attribut existant
obj_sess.article = 49137 # ajouter un nouvel attribut
</syntaxhighlight>
</source>
 
Les objets-sessions prennent aussi en charge une méthode <code>close()</code>, qui a pour effet d'effacer l'information de session. Vous n'êtes cependant pas obligé de clore explicitement les sessions : Karrigell s'assure de toute façon qu'il n'y ait jamais plus de 1000 sessions simultanées : il efface les plus anciennes quand on arrive à la 1000ème.
Ligne 162 :
Sauvegardez les trois petits scripts ci-dessous dans le répertoire-racine. Le premier génère un formulaire HTML similaire à ceux qui ont été décrits plus haut. Nommez-le ''sessionTest1.py'' :
 
<sourcesyntaxhighlight lang="python" line>
# Affichage d'un formulaire d'inscription :
 
Ligne 174 :
<INPUT TYPE = "submit" VALUE = "OK">
</FORM>"""
</syntaxhighlight>
</source>
 
Le suivant sera nommé ''sessionTest2.py''. C'est le script mentionné dans la balise d'ouverture du formulaire ci-dessus à la ligne 6, et qui sera invoqué lorsque l'utilisateur actionnera le bouton mis en place à la ligne 10. Ce script recevra les valeurs entrées par l'utilisateur dans les différents champs du formulaire, par l'intermédiaire d'un dictionnaire de requête situé dans la variable d'environnement <code>QUERY</code> de Karrigell<ref>Karrigell met en place un certain nombre de variables globales dont les noms sont en majuscules pour éviter un conflit éventuel avec les vôtres. Celle-ci joue le même rôle que la fonction <code>FieldStorage()</code> du module ''cgi''. Veuillez consulter la documentation de Karrigell si vous souhaitez obtenir des explications plus détaillées.</ref> :
 
<sourcesyntaxhighlight lang="python" line>
obSess = Session()
 
Ligne 193 :
print """
<a href = "sessionTest3.py"> Suite...</a>"""
</syntaxhighlight>
</source>
 
La première ligne de ce script crée l'objet-session, génère pour lui un identifiant unique, et expédie celui-ci au navigateur sous la forme d'un cookie.
Ligne 201 :
La ligne 14 définit un lien http pointant vers le troisième script, nommé ''sessionTest3.py'' :
 
<sourcesyntaxhighlight lang="python" line>
suiviSess = Session() # retrouver l'objet-session
suiviSess.article = 12345 # lui ajouter des attributs
Ligne 212 :
""" % (suiviSess.prenom, suiviSess.nom,
suiviSess.article, suiviSess.prix)
</syntaxhighlight>
</source>
 
Dirigez votre navigateur web vers l'adresse : http://localhost:8080/sessionTest1. Entrez des valeurs de votre choix dans les champs du formulaire, et cliquez sur le bouton OK :