IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

[WEB] Python - HTML


Sujet :

Python

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2013
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Novembre 2013
    Messages : 159
    Points : 52
    Points
    52
    Par défaut [WEB] Python - HTML
    Bonjour,

    J'ai pour projet personnel de faire un site web tout en ayant des contraintes assez élevés lié à mon environnement.

    -Je dois utilisé du python 2.6
    -J'utilise les librairies de bases de python

    J'ai pas mal de questions sur l'organisation et sur la réalisation du site.

    Au niveau de l'architecture je souhaite :

    - Serveur :
    En python 2.6 avec la librairie BaseHTTPServer + SQLite

    Mon code de base (récupéré) est le suivant...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    #!/usr/bin/python
    from BaseHTTPServer import BaseHTTPRequestHandler,HTTPServer
    from os import curdir, sep, path
    import cgi
     
    PORT_NUMBER = 36654
     
    #This class will handles any incoming request from
    #the browser 
    class myHandler(BaseHTTPRequestHandler):
     
    	#Handler for the GET requests
    	def do_GET(self):
    		print "do_GET"
    		if self.path=="/":
    			self.path="/index_example3.html"
     
    		try:
    			#Check the file extension required and
    			#set the right mime type
     
    			sendReply = False
    			if self.path.endswith(".html"):
    				mimetype='text/html'
    				sendReply = True
    			if self.path.endswith(".jpg"):
    				mimetype='image/jpg'
    				sendReply = True
    			if self.path.endswith(".gif"):
    				mimetype='image/gif'
    				sendReply = True
    			if self.path.endswith(".js"):
    				mimetype='application/javascript'
    				sendReply = True
    			if self.path.endswith(".css"):
    				mimetype='text/css'
    				sendReply = True
     
    			if sendReply == True:
    				#Open the static file requested and send it
    				f = open(curdir + sep + self.path) 
    				self.send_response(200)
    				self.send_header('Content-type',mimetype)
    				self.end_headers()
    				self.wfile.write(f.read())
    				print "Chargement 1"
    				f.close()
    			return
     
    		except IOError:
    			self.send_error(404,'File Not Found: %s' % self.path)
     
    	#Handler for the POST requests
    	def do_POST(self):
    		if self.path=="/send":
    			form = cgi.FieldStorage(
    				fp=self.rfile, 
    				headers=self.headers,
    				environ={'REQUEST_METHOD':'POST',
    		                 'CONTENT_TYPE':self.headers['Content-Type'],
    			})
     
    			print "Your name is: %s" % form["your_name"].value
    			self.path="/index_example5.html"
    			self.do_GET()
    			return			
    		if self.path == "/send2":
    			form = cgi.FieldStorage(
                                    fp=self.rfile,
                                    headers=self.headers,
                                    environ={'REQUEST_METHOD':'POST',
                                     'CONTENT_TYPE':self.headers['Content-Type'],
                            })
     
                            print "Your name is: %s" % form["your_name"].value
                            self.path="/index.html"
     
    			self.do_GET()
     
                            return
     
     
    try:
    	#Create a web server and define the handler to manage the
    	#incoming request
    	server = HTTPServer(('', PORT_NUMBER), myHandler)
    	print 'Started httpserver on port ' , PORT_NUMBER
     
    	#Wait forever for incoming htto requests
    	server.serve_forever()
     
    except KeyboardInterrupt:
    	print '^C received, shutting down the web server'
    	server.socket.close()
    -Client :
    Le client se réalisé avec du python, de l'html, ajax, js, bootsrap.


    Mes premières questions sont les suivantes :

    - Comment intégrer du python dans de l'HTML ? Est ce que mon extension doit être .py et comment gérer la redirection (je pense notamment au ligne suivante)

    Quid avec du python ? Dois je faire une fonction python qui retourne un string ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    self.wfile.write(f.read()
    Quid avec l'extension .py ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    sendReply = False
    			if self.path.endswith(".html"):
    				mimetype='text/html'
    				sendReply = True
    			if self.path.endswith(".jpg"):
    				mimetype='image/jpg'
    				sendReply = True
    			if self.path.endswith(".gif"):
    				mimetype='image/gif'
    				sendReply = True
    			if self.path.endswith(".js"):
    				mimetype='application/javascript'
    				sendReply = True
    			if self.path.endswith(".css"):
    				mimetype='text/css'
    				sendReply = True

    Je souhaite gérer de l'authentification et la visibilité de certains éléments du site.

    Comment gérer la visibilité ? La question rejoint celle d'intégrer du python avec du html...

    Quel librairie me conseillez-vous pour l'encodage (et le décodage par conséquence) du mot de passe en base ? Tout en gardant à l'esprit que je suis en 2.6 et que mes librairies doivent être au maximum celle fournit par python de base...

    Avez vous des exemples, tutoriels, ... qui me permettraient d'avancer ? Les documentations sur BaseHTTPServer sont très légères et je n'ai trouvé que peu d'exemples...

    Je vous remercie d'avance et reste à disposition pour tous compléments d'informations.

    Cordialement Quentin.

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2013
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Novembre 2013
    Messages : 159
    Points : 52
    Points
    52
    Par défaut
    Je relance svp

  3. #3
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 462
    Points : 9 249
    Points
    9 249
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    J'avais fait un petit serveur web en Python il y a un certain temps (9 ans...), et ça tombe bien puisqu'il a été écrit en Python 2.

    http://python.jpvweb.com/python/mesr...lculatrice_cgi

    Essaie de le faire marcher et de l'adapter ensuite à tes besoins.

    javascript devrait fonctionner puisqu'il s'exécute dans le navigateur client. Mais si on veut PHP en plus (ou d'autres trucs qui s'exécutent côté serveur), il faudrait avoir un serveur complet sur le PC (Apache) avec Python en CGI: c'est techniquement possible, mais ça se complique sérieusement.

    On suppose, bien sûr, que ça fonctionne sur un seul PC avec Python installé. Attention à la sécurité: le Python installé sur le PC est complet, et contient donc tout ce qu'il faut pour effacer le disque dur!

    Sur le web, il faut avoir un hébergeur qui fournit Python en CGI sur ses serveurs. C'est ce que j'utilise pour ma calculatrice en ligne (je sais qu'il y a un lien mort. Le bon lien est: http://python.jpvweb.com/python/mesr...p?id=calculext) qui est installée chez "Infomaniak" (hébergeur suisse):

    http://calculext.jpvweb.com/

    Je l'utilise souvent pour mes propres besoins, et elle est pratique parce qu'elle est disponible aussi à partir d'une tablette. Par exemple pour calculer un crédit chez le banquier...
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2013
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Novembre 2013
    Messages : 159
    Points : 52
    Points
    52
    Par défaut
    Merci pour ta réponse ! Je regarde au plus vite ton projet. Dans mon cas je ne peux installer de modules php sur l'apache...

Discussions similaires

  1. [Mission/Télétravail] Développeur web PHP, HTML, CSS, Python
    Par Pythonesque dans le forum Demandes
    Réponses: 0
    Dernier message: 26/01/2010, 00h03
  2. application web local, html, javascript, xml tourant sur PDA
    Par goupilou dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 06/03/2006, 22h40
  3. modifier color de scroll d'une page web+horloge[html+javasc]
    Par am.adnane dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 13/12/2005, 14h26
  4. [web] lien HTML à partir de perl
    Par lilou0210 dans le forum Web
    Réponses: 4
    Dernier message: 05/11/2004, 00h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo