Ns python web 1

Post on 22-Jan-2018

128 views 1 download

Transcript of Ns python web 1

Session 2/3

Olivier Rovellotti

Python

Le web

IP

DNS

Web Browser DNS

Google.com

216.58.206.238

Exercices

• Tracert

• Ipconfig

• Ping

• net send [ip du pc ciblé] message

UTL/URI

HTTP

Web Browser HTTP

Requette

HTML + CSS

HTTP methode GETLa méthode GET demande une représentation de la ressource spécifiée. Les requêtes GET doivent uniquement être utilisées afin de récupérer des données.

HEADLa méthode HEAD demande une réponse identique à une requête GET pour laquelle on aura omis le corps de la réponse (on a uniquement l'en-tête).

POSTLa méthode POST est utilisée pour envoyer une entité vers la ressource indiquée. Cela entraîne généralement un changement d'état ou des effets de bord sur le serveur.

PUTLa méthode PUT remplace toutes les représentations actuelles de la ressource visée par le contenu de la requête.

DELETELa méthode DELETE supprime la ressource indiquée.

CONNECTLa méthode CONNECT établit un tunnel vers le serveur identifié par la ressource cible.

OPTIONSLa méthode OPTIONS est utilisée pour décrire les options de communications avec la ressource visée.

TRACELa méthode TRACE réalise un message de test aller/retour en suivant le chemin de la ressource visée.

PATCHLa méthode PATCH est utilisée pour appliquer des modifications partielles à une ressource.

•200 : succès de la requête •301 et 302 : redirection, respectivement permanente et temporaire •401 : utilisateur non authentifié •403 : accès refusé •404 : page non trouvée•500 et 503 : erreur serveur.

Liste des codes HTTP

CGI

Web Browser

HTTP CGIServeur

Web

PRATIQUE

Code du serveur

import http.server PORT = 8888server_address = ("", PORT)

server = http.server.HTTPServerhandler = http.server.CGIHTTPRequestHandlerhandler.cgi_directories = ["/"]print("Serveur actif sur le port :", PORT)

httpd = server(server_address, handler)httpd.serve_forever()

URL /PORT

CGI

#!/usr/bin/env python # -*- coding: UTF-8 -*-

# enable debugging import cgitb cgitb.enable()

print "Content-Type: text/plain;charset=utf-8" print print "Hello World!"

Hello

ASCII

UNICODEAu lieu d'utiliser seulement les codes 0 à 127, il utilise des codes de valeur bien plus grandes.

Le code UNICODE permet de représenter tous les caractères spécifiques aux différentes langues. De nouveaux codes sont régulièrement attribués pour de nouveaux caractères: caractères latins (accentués ou non), grecs, cyrillics, arméniens, hébreux, thaï, hiragana, katakana... L'alphabet Chinois Kanji comporte à lui seul 6879 caractères.

Un caractères prend 2 octets.

la grande majorité des caractères utilisent seulement le code ASCII.

UTF-8.

Un texte en UTF-8 est simple: il est partout en ASCII, et dès qu'on a besoin d'un caractère appartenant à l'Unicode, on utilise un caractère spécial signalant "attention, le caractère suivant est en Unicode".

Exercises

1.1Afficher tous mes contacts sur une page

1.2 Ecrire une fonction qui renvoie une chaine HTML à partir d’une liste python

1.3 Afficher tous les élevés de la classe sur une page mise en forme (CSS et image)

#!/usr/bin/python3 # -*- coding: utf-8 -*

import cgi

form = cgi.FieldStorage() print("Content-type: text/html; charset=utf-8\n") print(form.getvalue("name"))

html = """<!DOCTYPE html> <head><title>Mon programme</title> </head> <body> <form action="/index.py" method="post"> <input type="text" name="name" value="Votre nom" /> <input type="submit" name="send" value="Envoyer information au serveur"> </form> </body> </html> """

print(html)

FieldStorage

The POST Method

Note that the query string (name/value pairs) is sent in the HTTP message body of a POST request:POST /test/demo_form.php HTTP/1.1Host: w3schools.com

name1=value1&name2=value2

Some other notes on POST requests:•POST requests are never cached•POST requests do not remain in the browser history•POST requests cannot be bookmarked•POST requests have no restrictions on data length

The GET MethodNote that the query string (name/value pairs) is sent in the URL of a GET request:

/test/demo_form.php?name1=value1&name2=value2 Some other notes on GET requests:•GET requests can be cached•GET requests remain in the browser history•GET requests can be bookmarked•GET requests should never be used when dealing with sensitive data•GET requests have length restrictions•GET requests should be used only to retrieve data

Exercises

1.1 Ajouter un contact

1.2 Ajouter une relation entre deux contacts

1.3 Afficher un graphe de contact (https://d3js.org/)

EXERCICES

Exercices Web

• Application todo sans persistance• Ajouter une tache• Supprimer une tache• Marquer un tache comme « Done »

• Application todo avec persistance• Ajouter une tache• Supprimer une tache• Marquer un tache comme « Done »• Sauvegarder les taches dans un fichier

Twitter: @orovellotti www.natural-solutions.eu

Merci

Olivier_rovellotti@natural-solutions.eu