Flask

J’ai décidé de tester le système de “sign-in” de google pour authentification des gens sur un site web. En regardant plusieurs vidéos de google DEV sur youtube j’ai remarqué qu’ils utilisent souvent un serveur web python : Flask

Voilà donc quelques tests rapides de ce que l’on peut faire avec Falsk.

Test basique

Création d’un site qui affiche une string de bienvenu.

##############
#Test basique#
##############
#On creer un decorateur qui prend en parametre une route correspondant a une page web
@app.route('/')
#on decore notre fonction avec le decorateur precedement creer. Cette fonction sera en charge de creer la page web correspondant a la route du decorateur
def index():
    return "Hello"

#On refait un autre test pour une autre page web. Pour info le nom de la fonction n a aucun importance
@app.route('/test1')
def unTest():
    return "Test 1

FlaskBasic

Test multi-route

Plusieurs adresses renvoyant vers le même site basique.

##################
#Test multi route#
##################
#On refait un autre test pour une autre page web. On peut avoir plusieur decorateur pour un seul fonction
@app.route('/test31')
@app.route('/test32')
@app.route('/test33')
def unTest():
    return "Meme page pour test31 et test32 et test33"

FlasMultiRoute

Test route dynamique

Le site est un peu plus complexe car il utilise des informations passe dans l’adresse du site.

######################
#Test route dynamique#
######################
@app.route('/dynamique/<nom>')
#Attention : le parametre de la route doit etre le meme que le nom de l argument dans la fonction
def routeDynamik(nom):
    return "Bonjour : " + nom

FlaskComplexe

Test route redirection

le site vous redirige vers google en utilisant le code erreur 301

########################
#Test route redirection#
########################
@app.route('/testRedirect')
def testRedirect():
    return redirect('http://www.google.fr')

Test template

Le site est créé à partir d’un Template html

################
#Test templates#
################
@app.route('/template')
#Il faut absolument que la page correspondante html existe dans le repertoire template. La commande ll permetera de le verifier avec ll templates/hello_world.html
def TestTemplate():
    return render_template('hello_world.html')

Il faut également créer un fichier html de Template dans le répertoire “/template” avec le nom correspondant. Le nom du répertoire doit être respecte.

[root@domU-12-31-39-14-5D-9B templates]# cat hello_world.html
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title>hello</title>
    </head>

    <body>
        <h1>hello</h1>
    </body>
</html>

FalskTemplate

Test template dynamique

Le site crée à partir du Template prend en compte des informations passe depuis la fonction python.

#################################
#test avec template plus dynamik#
#################################
@app.route('/template2')
#Il faut absolument que la page correspondante html existe dans le repertoire template. La commande ll permetera de le verifier avec ll templates/hello_world.html
def TestTemplateidyna():
    return render_template('complex.html', titre="un titre de site", contenu="un contenu de site")

Comme pour l’exemple précédant il faut créer le Template html dans le répertoire template.

[root@domU-12-31-39-14-5D-9B templates]# cat complex.html
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title>{{ titre }}</title>
    </head>

    <body>
        <h1>{{ titre }}</h1>
            {{ contenu }}
    </body>
</html>

FalskTemplateComplexe

L’ensemble du code est disponible sur bitbucket : https://bitbucket.org/charly37/decouverteflask