Aller au menu - Aller au contenu

[Plan du site] Vous êtes ici --- > Le Site du Zéro > Les tutoriels > Non-Officiels > Programmation > Python > Aperçu de la CGI avec Python > Lecture des commentaires

Aperçu de la CGI avec Python

Vous devez être inscrit pour pouvoir poster des messages

Page : 1 
Pseudo Commentaire
Page : 1 
Hors ligne jiraya sama # Posté le 05/05/2008 à 09:35:09 - Ce membre n'a pas mis de note
Don't worry be happy
Avatar
Groupe : Membres
Merci pour ton tuto c'est une très bonne idée ça m'interessait justement de faire un site en python.Tu devrait voir pour rajouter des lien vers des hebergeurs acceptant python ça serait bien pour ceux qui veulent pouvoir voir leur site en ligne ^^

L'intelligence c'est comme un parachute quand on en a pas on s'écrase !!
Image utilisateur
www.elements-wars.com réouvre ses portes pour la version 3 !
Image utilisateur


 
Hors ligne Linktim # Posté le 12/05/2008 à 19:18:11 - Ce membre n'a pas mis de note
The Other Side
Avatar
Groupe : Membres
Citation : le tuto
Évite de mettre « monsite.com » ... ce site existe vraiment !
 
Hors ligne A-dream # Posté le 12/05/2008 à 19:41:51 - Ce membre a mis la note : 20
Openoffice ça roxxxx §
Avatar
Groupe : Membres
Très bien.

20/20.

Code : Autre
1
2
3
4
<Redlime> erf
<A-dream> wut
<Redlime> j'ai cliqué trop vite sur le bouton refuser xDDDD
<A-dream> XDDDDDDD

 
Hors ligne kedare # Posté le 12/05/2008 à 20:05:51 - Ce membre a mis la note : 18
I Hate PHP
Avatar
Groupe : Membres
pas mal, pas mal, même si je ne conseille vraiment pas de faire un site en utilisant python comme ca, je recommande plutôt d'utiliser un framework comme django ou turbogears :)

"Toute technologie suffisamment avancée est indifférenciable de la magie" Arthur C. Clarke, “Profil de l’avenir”, 1961
Pseudo PSN: Kedare
Code Mii: 8684 6147 7730 6877

dev.Kedare Blog
 
Hors ligne Artefact2 # Posté le 12/05/2008 à 20:15:46 - Ce membre n'a pas mis de note
Avatar
Groupe : Membres
Bien joué pour ton tuto :)

Par contre, quel est l'avantage par rapport à mod_python ? Quid des performances comparé à PHP ?
 
Hors ligne Krankkatze # Posté le 12/05/2008 à 21:13:34 - Ce membre n'a pas mis de note
Ob-la-di, Ob-la-da
Avatar
Groupe : Membres
Pour avoir une idée des performances de Python par rapport à celles des PHP, tu peux rechercher "benchmark + PHP + Python" dans google. J'ai trouvé trois benchmarks, un sur des fractales (Php est powné), un sur les fonctions récursives (pareil), un qui affiche un "Hello world" puis incrémente une variable (encore pareil).
Je sais qu'on peut pas trop juger sur des benchmarks de ce genre mais ça donne quand même une idée :-°
 
Hors ligne Nelty # Posté le 12/05/2008 à 21:45:26 - Ce membre a mis la note : 17
Garfield attitude §
Avatar
Groupe : Membres
Très bon tuto, j'ai bien aimé.
17/20.

Image utilisateur






Python



À l'ouïe de ce mot, vous pouvez penser à deux choses. La première, c'est le serpent. La deuxième, c'est le langage de programmation. Étant donné que nous sommes sur un site basé autour de ce dernier domaine, je vais plutôt m'intéresser au langage. :p

Concrètement, Python c'est quoi ?



Python est comme je l'ai indiqué plus haut un langage de programmation interprété.
Il est placé sous une licence libre et est un langage dit «multi-plateforme» (il fonctionne sous Windows, Mac et Linux).
Comme beaucoup, il est à la base exploitable en console, mais l'utilisation de GUI est envisageable pour faire une application graphique.

Atouts



Un des gros avantages de Python est qu'il est très simple à l'écriture et vous permet d'adopter de bonnes méthodes de programmation, notamment au niveau de la lisibilité du code.
En effet, ici, plus d'accolades ou autres pour indiquer un bloc d'instruction (if, else, while, ...), tout se fait par indentation.
Ainsi, un tel code en PHP :
Code : PHP
1
2
3
4
5
6
<?php
for($i=1;$i<=3;$i++)
{
echo $i*2.' ';
}
?>

Donnera ceci en Python :
Code : Python
1
2
3
4
for i in xrange(1,4):
  print 2*i
# ou
[i*2 for i in [1,2,3]]


Les deux afficheront (à peu près) :
Citation : Résultat :

2,4,6


Remarquez la simplification du code pour effectuer une action très simple.

Il a aussi l'avantage d'intégrer de nombreuses bibliothèques pour effectuer une multitude d'actions très diverses, dans tous les domaines. math pour les opérations mathématiques par exemple.

Pour finir, il est aussi exploitable sur le Web. Pour l'utiliser, il vous faudra un hébergeur l'acceptant et peut-être inclure certaines bibliothèques selon vos besoins (je pense à CGI pour les traitements de formulaire). À titre d'information, alwaysdata accepte le Python et est gratuit.

Où apprendre ?



Question évidemment indispensable si vous êtes intéressés... La première, la plus évidente, c'est la documentation officielle de Python, malheureusement uniquement disponible en anglais.
Mais il existe un cours très réputé rédigé par un certain Gérard Swinnen qui est disponible en français.
S'il ne vous plaît pas, Google (ou autre moteur de recherche) est votre ami !

Où se faire aider ?



Peut-être une question qui ne vous viendra pas à l'esprit immédiatement, mais quand vous aurez un problème que vous ne saurez résoudre... Ne vous inquiétez pas, d'autres gens sont passés avant vous et sont prêts à vous aider !
Dans un premier temps, je vous conseille de passer sur IRC, channel #python, serveur irc.epiknet.org . Vous y trouverez un petit groupe de gens qui pourront peut-être vous aider.
Après, si vous n'avez pas résolu votre problème, il reste le forum « Autres langages » où des Pythoneux viennent de temps en temps.
Enfin, si votre problème est lié à l'utilisation d'une bibliothèque, n'oubliez pas d'aller consulter sa documentation (très souvent en anglais).
 
Hors ligne Valter # Posté le 12/05/2008 à 21:59:31 - Ce membre a mis la note : 18
http://skyzzor.blogspot.com/
Groupe : Membres
Très bien ! Excellent même !! Je ne te met que 18 car tu n'as pas parlé des avantages de python / cgi face à une site 'traditionnel' ;)
Hors ligne kedare # Posté le 13/05/2008 à 01:20:56 - Ce membre a mis la note : 18
I Hate PHP
Avatar
Groupe : Membres
Cependant pour le web, entre php, et python en cgi, je pense que c'est php qui gagne.. vu que bon, le cgi ca a des performances désastreuses

"Toute technologie suffisamment avancée est indifférenciable de la magie" Arthur C. Clarke, “Profil de l’avenir”, 1961
Pseudo PSN: Kedare
Code Mii: 8684 6147 7730 6877

dev.Kedare Blog
 
Hors ligne zulon # Posté le 13/05/2008 à 13:10:53 - Ce membre n'a pas mis de note
The shrieker shrieks.
Avatar
Groupe : Membres
Plusieurs remarques:
  • Pourquoi utiliser un .htaccess ? Cette pratique est une des choses qui ralentissent énormément Apache. C'est une configuration globale; il vaut mieux utiliser le fichier de conf global, tu ne penses pas :) ?
  • Le module cgi ne fournit-il pas de fonctions pour les headers HTTP ? Si elles existent, ça serait bien de les présenter.
  • La gestion du XML est assez étrange :D
  • Je sais bien que ce n'est qu'un "aperçu", mais c'est vraiment très succinct :-°
  • Pourquoi Pyth^W^WNon rien :)

Le reste c'est du Python, je saurais pas dire si c'est joli :-°
Mais sinon c'est pas mal, ça fera découvrir aux gens autre chose que PHP :p

Image utilisateur
 
Hors ligne Nelty # Posté le 13/05/2008 à 18:03:26 - Ce membre a mis la note : 17
Garfield attitude §
Avatar
Groupe : Membres
J'ai une question, je me disais "a priori on peut faire beaucoup de choses sur le web avec python". Mais peut-on utiliser des sessions/cookies en python ?

Image utilisateur






Python



À l'ouïe de ce mot, vous pouvez penser à deux choses. La première, c'est le serpent. La deuxième, c'est le langage de programmation. Étant donné que nous sommes sur un site basé autour de ce dernier domaine, je vais plutôt m'intéresser au langage. :p

Concrètement, Python c'est quoi ?



Python est comme je l'ai indiqué plus haut un langage de programmation interprété.
Il est placé sous une licence libre et est un langage dit «multi-plateforme» (il fonctionne sous Windows, Mac et Linux).
Comme beaucoup, il est à la base exploitable en console, mais l'utilisation de GUI est envisageable pour faire une application graphique.

Atouts



Un des gros avantages de Python est qu'il est très simple à l'écriture et vous permet d'adopter de bonnes méthodes de programmation, notamment au niveau de la lisibilité du code.
En effet, ici, plus d'accolades ou autres pour indiquer un bloc d'instruction (if, else, while, ...), tout se fait par indentation.
Ainsi, un tel code en PHP :
Code : PHP
1
2
3
4
5
6
<?php
for($i=1;$i<=3;$i++)
{
echo $i*2.' ';
}
?>

Donnera ceci en Python :
Code : Python
1
2
3
4
for i in xrange(1,4):
  print 2*i
# ou
[i*2 for i in [1,2,3]]


Les deux afficheront (à peu près) :
Citation : Résultat :

2,4,6


Remarquez la simplification du code pour effectuer une action très simple.

Il a aussi l'avantage d'intégrer de nombreuses bibliothèques pour effectuer une multitude d'actions très diverses, dans tous les domaines. math pour les opérations mathématiques par exemple.

Pour finir, il est aussi exploitable sur le Web. Pour l'utiliser, il vous faudra un hébergeur l'acceptant et peut-être inclure certaines bibliothèques selon vos besoins (je pense à CGI pour les traitements de formulaire). À titre d'information, alwaysdata accepte le Python et est gratuit.

Où apprendre ?



Question évidemment indispensable si vous êtes intéressés... La première, la plus évidente, c'est la documentation officielle de Python, malheureusement uniquement disponible en anglais.
Mais il existe un cours très réputé rédigé par un certain Gérard Swinnen qui est disponible en français.
S'il ne vous plaît pas, Google (ou autre moteur de recherche) est votre ami !

Où se faire aider ?



Peut-être une question qui ne vous viendra pas à l'esprit immédiatement, mais quand vous aurez un problème que vous ne saurez résoudre... Ne vous inquiétez pas, d'autres gens sont passés avant vous et sont prêts à vous aider !
Dans un premier temps, je vous conseille de passer sur IRC, channel #python, serveur irc.epiknet.org . Vous y trouverez un petit groupe de gens qui pourront peut-être vous aider.
Après, si vous n'avez pas résolu votre problème, il reste le forum « Autres langages » où des Pythoneux viennent de temps en temps.
Enfin, si votre problème est lié à l'utilisation d'une bibliothèque, n'oubliez pas d'aller consulter sa documentation (très souvent en anglais).
 
Hors ligne arco29 # Posté le 13/05/2008 à 19:46:52 - Ce membre a mis la note : 19
vive zozor
Avatar
Groupe : Membres
Salut
Tout d'abord ce tuto est trèèèès bien.
Toutefois tu pourrais donner plus d'explications sur le code xHTML (en tant que gros zér00, je n'ai pas compris une ligne de code (la n°17):
Code : Python
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
#!/usr/bin/python
import cgi
print 'Content-type: text/html'
print
print '<html><head><title>Mon super site</title></head><body>'
formulaire = cgi.FieldStorage()
if formulaire.getvalue('message') != None:
 print '<p>Merci d'avoir particip&eacute; au livre d'or. Vous pouvez le visiter <a href="livreor.py">ici</a>.</p>'
 message = formulaire.getvalue('message')
 site = formulaire.getvalue('site')
 pseudo = formulaire.getvalue('pseudo')
 try:
  fichier = open('livreor','r')
  livreor = fichier.read()
 except:
  livreor = ''
 message_poste = '<message><auteur>'+pseudo+'</auteur><site>'+site+'</site><contenu>'+cgi.escape(message)+'</contenu></message>
'
 fichier = open('livreor','w')
 fichier.write(message_poste+livreor)
else:
 print '''Erreur : vous n'avez pas rempli le formulaire.'''
print '</body></html>


J'ai d'ailleur demander de l'aide sur le forum ici

J'ai mis 19/20 (rien n'edst parfait) ;)

Image utilisateur
 
Hors ligne Krankkatze # Posté le 13/05/2008 à 21:49:25 - Ce membre n'a pas mis de note
Ob-la-di, Ob-la-da
Avatar
Groupe : Membres
En réalité, la ligne 17 n'est pas en xHTML mais en XML, qui est le standart sur lequel est basé le xHTML.
J'ai créé mes propres balises XML (<auteur>, ...) et je les ai utilisées pour enregistrer les messages.
Si le xHTML de ce tuto est peu compréhensible, c'est que je ne l'ai pas rendu valide aux normes de la W3C, vu que c'est pas le but du tuto. Mais à partir du moment où tu sais manier le xHTML et que tu as compris les principes de la CGI en Python, il ne te reste plus qu'à coder tes programmes avec des balises valides.
 
Hors ligne Maxibolt # Posté le 15/05/2008 à 10:35:10 - Ce membre a mis la note : 20
Devenir gris.
Avatar
Groupe : Membres
Le tuto est pas mal, mais cgi c'est complètement pourri...
Pour ceux que ça intéresse de faire leur site en python, utilisez django, c'est plus rapide, plus propre et pour des projets d'importance ça tient la route.

http://django-fr.org pour les tutos.
http://alwaysdata.net pour l'hébergeur (gratuit ou payant, au choix)

Sinon 20 pour le tuto qui en lui-même est nickel.
 
Hors ligne chindit # Posté le 15/05/2008 à 19:28:59 - Ce membre a mis la note : 19
KDE fan
Avatar
Groupe : Membres
Génial, ça faisait longtemps que je cherchais un tuto sur le CGI :)
19/20

Image utilisateur
Image utilisateur
 
Hors ligne Yomik0 # Posté le 15/05/2008 à 19:55:11 - Ce membre a mis la note : 18
Now ? Revolution !!
Avatar
Groupe : Bannis
Pour reprendre l'avis des gens au dessus, Django c'est bien aussi, mais CGI ça peut être pratique si on veut pas se trimballer tout un framework lourd et qu'on veut juste faire une page rapidement. Btw je préconise de mon côté Jinja + WSGI, alliés ptet à Werkzeug pour l'URL mapping.

Au niveau du tutoriel, j'ai pas grand chose à dire, dans l'ensemble c'est très correct, ça fait toutefois bizarre d'entendre « la CGI » même si la traduction de l'acronyme nous donne un nom féminin, mais c'est sûrement une question d'habitude :D .

Bref, une petite liste des améliorations que j'aurais à donner ? :-°
  • Il serait très bien de parler du module cgitb qui permet d'afficher les exceptions générées par le script CGI plutôt qu'une erreur 500. Son utilisation est de plus très simple et explicable en un court paragraphe (rajouter import cgitb au début de son code c'est donné à tout le monde je pense :D ).
  • Tant que je parle d'erreur 500, précise qu'un problème de chmod cause une erreur 500 comme une exception dans le script, ce qui est souvent source de confusion supplémentaire. L'utilisation de cgitb permet d'ailleurs de corriger cela.
  • Il serait bon de parler de Python et de son support chez les hébergeurs web les plus fréquents (OVH, 1&1, etc.). En effet, même s'ils ne le précisent pas, ces hébergeurs supportent relativement souvent le Python. Parler d'hébergeurs gratuits supportant Python est cependant une bonne initiative.
  • Petit point de vocabulaire, la première ligne du fichier commençant par #! s'appelle le shebang, c'est utilisé dans tous les langages de script et par la libc pour déterminer quel interpréteur lancer, même en console, pas seulement en CGI.
  • Je remarque que souvent dans tes exemples tu ne sépares pas suffisamment le code du formattage HTML, il serait beaucoup mieux de définir des constantes et de remplacer ce que l'on veut dedans via l'opérateur de formattage % . Pourquoi ne pas enrichir aussi ce tutoriel avec l'utilisation basique d'un langage de templates ?
  • except: , c'est mal, et c'est déconseillé par la PEP8 par la même occasion. Quand on catche des exceptions, on spécifie le type de ce que l'on veut catcher, ou au moins le type générique Exception . Je pense pas que ce soit dans ton interêt de continuer l'exécution du script lors d'une KeyboardInterrupt ...
  • L'indentation conseillée par la PEP8 en Python, c'est 4 espaces, pas deux. C'est une bonne habitude à prendre pour coder en équipe, et c'est ce qui est demandé dans les grands projets.
  • Les imports se font sauf cas exceptionnels (conflit de nom, redéfinition de __import__, import dépendant d'une variable) au début du fichier, après les commentaires d'entête et avant tout autre code. Ce n'est pas le cas de ton import cgi , placé après tes print.
  • Un point sur lequel je n'ai rien à redire et qu'il est bon de préciser est que tu n'as pas négligé la sécurité dans ton code Python. C'est quelque chose auquel les gens pensent rarement, mais pourtant tellement simple... Donner aux lecteurs l'habitude cgi.escape est selon moi une très bonne chose.
  • Ton XML like n'est pas du XML, et c'est bête, tu perd l'avantage de pouvoir montrer aux gens comment utiliser des parsers XML comme BeautifulSoup ou ElementTree (standard, contrairement à BeautifulSoup). De plus, tu dis clairement en commentaire que c'est du XML, ce qui est faux.
  • Pour afficher la source, au lieu d'un else: après avoir vérifié si on voulait afficher la source, tu pourrais directement quitter avec un sys.exit(0) , c'est ce que je fais la plupart du temps.


Bref, malgré cette longue liste de choses potentiellement améliorables (et encore, pas si longue que ça, on voit que delroth t'a aidé :----°), je plussoie tous les gens avant qui disent que c'est un tutoriel de qualité, et t'encourage à continuer dans cette voie ;) .

o_O "Bonheur pour l'un, malheur pour l'autre, telle est la loi de l'univers." :-°
 
Hors ligne got-r00t # Posté le 18/06/2008 à 00:42:09 - Ce membre a mis la note : 18
t3h l33t on3
Avatar
Groupe : Membres
18/20

on peut utiliser une BDD ? (pour les livres d'or par exemple)
Hors ligne guizmo.7 # Posté le 10/11/2008 à 15:38:07 - Ce membre n'a pas mis de note
Rien ne vaut le travail
Groupe : Membres
Tu mets 3 quotes simples (''') pour définir une zone de texte sur plusieurs ligne, n'est-ce pas utilisé pour les commentaires sur plusieurs lignes ? Ne faut-il pas plutôt utili.ser 3 guillemets (""") ?
On peut utiliser une base de données, voir du coté de MySQLdb pour mysql.

Vous devez être inscrit pour pouvoir poster des messages

Changer de design | En savoir plus | Plan du site | Politique d'accessibilité | Règles | RSS tutoriels | RSS news
Édité par Simple IT SARL : Nous contacter | Notre blog | Revue de presse | Publicité

Y'a plus rien à lire, faut remonter maintenant !

Hébergement web - Correction de tutoriels - Créer un site
Vous souhaitez apparaître ici ? Contactez-nous.

Nombre de connectés 446 Zéros connectés | Requêtes SQL 8 requêtes | Temps de génération de la page : Total (SQL) 0.0302s (0.0185s)