Créer une application Web à partir de zéro en utilisant Python Flask et MySQL

Dans cette série, nous utiliserons Python, Flask et MySQL pour créer une application Web simple à partir de rien. Ce sera une simple application de liste de compartiments où les utilisateurs pourront s’inscrire, se connecter et créer leur liste de compartiments..

Ce tutoriel suppose que vous ayez des connaissances de base sur le Python langage de programmation. Nous allons utiliser Ballon, un framework d’application Web Python, pour créer notre application, avec MySQL comme l'arrière.

Si vous avez besoin de parfaire vos compétences en Python, essayez le cours Introduction à Python, qui vous donne une base solide dans la langue pour seulement 5 $..

Introduction à la fiole de python

Flask est un framework Python pour la création d'applications Web. Du site officiel,

Flask est un microframework pour Python basé sur Werkzeug, Jinja 2 et de bonnes intentions.

Lorsque nous pensons à Python, le framework de facto qui nous vient à l’esprit est le framework Django. Mais du point de vue d'un débutant en Python, Flask est plus facile à utiliser qu'avec Django..

Mise en place de la fiole

L'installation de Flask est assez simple et rapide. Avec pépin gestionnaire de paquets, tout ce que nous avons à faire est: 

pip installer la fiole

Une fois que vous avez terminé l’installation de Flask, créez un dossier appelé FlaskApp. Accédez au FlaskApp dossier et créer un fichier appelé app.py. Importer le ballon module et créer une application en utilisant Flask comme indiqué:

depuis une importation de flacon Flask app = Flask (__ name__)

Définissez maintenant l'itinéraire de base / et son gestionnaire de demandes correspondant:

@ app.route ("/") def main (): retourne "Bienvenue!"

Ensuite, vérifiez si le fichier exécuté est le programme principal et exécutez l'application:

si __name__ == "__main__": app.run ()

Enregistrez les modifications et exécutez app.py:

python app.py

Pointez votre navigateur sur http: // localhost: 5000 / et vous devriez avoir le message de bienvenue.

Créer une page d'accueil

Tout d'abord, lorsque l'application est exécutée, nous devrions afficher une page d'accueil avec les derniers éléments de la liste de compartiments ajoutés par les utilisateurs. Ajoutons donc notre page d'accueil à notre dossier de candidature.

Flask cherche des fichiers de modèle dans le des modèles dossier. Alors naviguez vers le PythonApp dossier et créer un dossier appelé des modèles. À l'intérieur des modèles, créer un fichier appelé index.html. S'ouvrir index.html et ajoutez le code HTML suivant:

   App Paskon Flask Bucket List App     

App Flacon Python

Bucket List App

Inscrivez-vous aujourd'hui

Liste de seau

Donec id elit non porta gravida à eget metus. Maecenas faucibus mollis interdum.

Liste de seau

Morbi leo risus, porta ac consectetur ac, vestibule chez eros. Cras mattis consectetur purus sit amet fermentum.

Liste de seau

Les mécènes ont perdu tout leur cœur blandit assis sans regarder.

Liste de seau

Donec id elit non porta gravida à eget metus. Maecenas faucibus mollis interdum.

Liste de seau

Morbi leo risus, porta ac consectetur ac, vestibule chez eros. Cras mattis consectetur purus sit amet fermentum.

Liste de seau

Les mécènes ont perdu tout leur cœur blandit assis sans regarder.

© Société 2015

S'ouvrir app.py et importer render_template, que nous utiliserons pour rendre les fichiers de modèle.

depuis flask import Flask, render_template

Modifier la méthode principale pour renvoyer le fichier de modèle rendu.

def main (): return render_template ('index.html')

Enregistrez les modifications et redémarrez le serveur. Pointez votre navigateur sur http: // localhost: 5000 / et vous devriez avoir l’écran ci-dessous:

Création d'une page d'inscription

Étape 1: Configuration de la base de données

Nous allons utiliser MySQL comme le back end. Alors connectez-vous à MySQL à partir de la ligne de commande, ou si vous préférez une interface graphique telle que le banc de travail MySQL, vous pouvez également l'utiliser. Tout d’abord, créez une base de données appelée BucketList. A partir de la ligne de commande: 

mysql -u  -p

Entrez le mot de passe requis et, une fois connecté, exécutez la commande suivante pour créer la base de données:

CREATE DATABASE BucketList;

Une fois la base de données créée, créez une table appelée tbl_user comme montré:

CREATE TABLE 'BucketList'. 'Tbl_user' ('user_id' BIGINT NULL AUTO_INCREMENT, 'user_name' VARCHAR (45) NULL, 'user_username' VARCHAR (45) NULL, PRIMARY KEY ('user_id' )); 

Nous allons utiliser Procédures stockées pour que notre application Python puisse interagir avec la base de données MySQL. Donc, une fois la table tbl_user a été créé, créez une procédure stockée appelée sp_createUser inscrire un utilisateur.

Lors de la création d’une procédure stockée pour créer un utilisateur dans le tbl_user table, nous devons d’abord vérifier si un utilisateur avec le même Nom d'utilisateur existe déjà. S'il existe, nous devons envoyer une erreur à l'utilisateur, sinon nous allons créer l'utilisateur dans la table des utilisateurs. Voici comment la procédure stockée sp_createUser voudrais regarder:

DELIMITER $$ CREATE DEFINER = "root" @ 'localhost' PROCEDURE 'sp_createUser' (IN p_name VARCHAR (20), IN p_username VARCHAR (20), IN p_password VARCHAR (20)) COMMENCER si (select existe (sélectionnez 1 dans tbl_user où nom_utilisateur = nom_utilisateur)) ALORS sélectionner 'Le nom d'utilisateur existe !!'; ELSE insérer dans tbl_user (nom_utilisateur, nom_utilisateur, mot_de_passe_utilisateur) valeurs (nom_p, nom_utilisateur_p, mot_de_passe); FIN SI; FIN $$ DELIMITER; 

Étape 2: Créer une interface d'inscription

Accédez au PythonApp / templates répertoire et créer un fichier HTML appelé signup.html. Ajoutez le code HTML suivant à signup.html:

   App Paskon Flask Bucket List App      

App Flacon Python

Bucket List App

© Société 2015

Ajoutez également ce qui suit CSS comme signup.css dans le dossier statique à l'intérieur PythonApp.

body padding-top: 40px; rembourrage en bas: 40px;  .form-signin max-width: 330px; rembourrage: 15px; marge: 0 auto;  .form-signin .form-signin-heading, .form-signin .checkbox margin-bottom: 10px;  .form-signin .checkbox font-weight: normal;  .form-signin .form-control position: relative; hauteur: auto; -webkit-box-dimensionnement: border-box; -moz-box-dimensionnement: border-box; taille de la boîte: boîte-frontière; rembourrage: 10px; taille de police: 16px;  .form-signin .form-control: focus z-index: 2;  .form-signin input [type = "email"] margin-bottom: -1px; border-bottom-right-radius: 0; rayon en bas à gauche: 0;  .form-signin input [type = "mot de passe"] margin-bottom: 10px; rayon en haut à gauche: 0; border-top-right-radius: 0; 

Dans app.py ajouter une autre méthode appelée showSignUp rendre la page d'inscription une fois qu'une demande est arrivée / showSignUp:

@ app.route ('/ showSignUp') def showSignUp (): return render_template ('signup.html')

Enregistrez les modifications et redémarrez le serveur. Clique sur le S'inscrire bouton sur la page d'accueil et vous devriez avoir la page d'inscription comme indiqué: 

Étape 3: implémenter une méthode d'inscription 

Ensuite, nous avons besoin d’une méthode côté serveur pour que l’interface utilisateur puisse interagir avec la base de données MySQL. Alors naviguez vers PythonApp et ouvert app.py. Créez une nouvelle méthode appelée s'inscrire et aussi ajouter un itinéraire /s'inscrire. Voici à quoi ça ressemble:

@ app.route ('/ signUp') def signUp (): # créer le code utilisateur sera ici !!

Nous utiliserons jQuery AJAX pour publier nos données d’inscription sur le s'inscrire méthode, donc nous allons spécifier la méthode dans la définition de la route.

@ app.route ('/ signUp', méthodes = ['POST']) def signUp (): # créer un code utilisateur sera ici !!

Pour pouvoir lire les valeurs affichées, nous devons importer demande de Flask.

depuis flask import Flask, render_template, request

En utilisant demande nous pouvons lire les valeurs affichées comme indiqué ci-dessous:

@ app.route ('/ signUp', méthodes = ['POST']) def signUp (): # lit les valeurs publiées à partir de l'interface utilisateur _name = request.form ['inputName'] _email = request.form ['inputEmail' ] _password = request.form ['inputPassword']

Une fois les valeurs lues, nous allons simplement vérifier si elles sont valides et pour le moment, retournons un simple message:

@ app.route ('/ signUp', méthodes = ['POST']) def signUp (): # lit les valeurs publiées à partir de l'interface utilisateur _name = request.form ['inputName'] _email = request.form ['inputEmail' ] _password = request.form ['inputPassword'] # valider les valeurs reçues si _name et _email et _password: return json.dumps ('html': 'Tous les champs sont bons !!') else: return json.dumps (' html ':'Entrez les champs obligatoires')

Importer aussi JSON de Flask, puisque nous l'utilisons dans le code ci-dessus pour renvoyer JSON Les données.

depuis une importation de flacon Flask, render_template, json, request

Étape 4: Créer une demande d'inscription

Nous utiliserons jQuery AJAX pour envoyer la demande d'inscription à la méthode Python. Télécharger et placer jQuery à l'intérieur PythonApp / static / js et ajoutez un lien à partir de la page d'inscription. Une fois jQuery inclus, nous ajouterons un jQuery POSTER demande lorsque l'utilisateur clique sur le S'inscrire bouton.

Alors, attachons l'événement click du bouton d'inscription comme indiqué:

$ (function () $ ('# btnSignUp'). click (function () $ .ajax (url: '/ signUp', données: $ ('formulaire'). serialize (), tapez: 'POST' , succès: fonction (réponse) console.log (réponse);, erreur: fonction (erreur) console.log (erreur););););

Enregistrez toutes les modifications et redémarrez le serveur. Du S'inscrire page, remplissez les détails et cliquez sur S'inscrire. Vérifiez la console du navigateur et vous devriez avoir le message ci-dessous:

"html": "Tous les champs sont bons !!" 

Étape 5: Appelez la procédure stockée MySQL 

Une fois que nous avons le prénom, adresse électronique et mot de passe, nous pouvons simplement appeler la procédure stockée MySQL pour créer le nouvel utilisateur.

Pour vous connecter avec MySQL, nous utiliserons Flask-MySQL, qui est une extension Flask. Afin de commencer avec Flask-MySQL, installez-le en utilisant pépin directeur chargé d'emballage:

pip installer flask-mysql

Importer MySQL à l'intérieur app.py:

depuis flask.ext.mysql importer MySQL

Plus tôt, nous avons défini notre application comme indiqué:

app = Flacon (__ nom__)

En plus de cela incluent les configurations MySQL suivantes:

mysql = MySQL () # Configurations MySQL app.config ['MYSQL_DATABASE_USER'] = 'jay' app.config ['MYSQL_DATABASE_PASSWORD'] = 'BucketList '] =' localhost 'mysql.init_app (app) 

Commençons par créer la connexion MySQL:

conn = mysql.connect ()

Une fois la connexion créée, nous aurons besoin d’un le curseur pour interroger notre procédure stockée. Donc, en utilisant Connecticut connexion, créer un curseur.

curseur = conn.cursor ()

Avant d'appeler la procédure stockée create user, familiarisons notre mot de passe à l'aide d'un utilitaire fourni par Werkzeug. Importer le module dans app.py:

depuis werkzeug import generate_password_hash, check_password_hash

Utilisez le module de salage pour créer le mot de passe haché.

_hashed_password = generate_password_hash (_password)

Appelons maintenant la procédure sp_createUser:

cursor.callproc ('sp_createUser', (_ name, _email, _hashed_password))

Si la procédure est exécutée avec succès, nous validerons les modifications et renverrons le message de réussite.. 

data = cursor.fetchall () si len (data) vaut 0: conn.commit () renvoie json.dumps ('message': 'Utilisateur créé avec succès!') sinon: renvoie json.dumps ('erreur': str (data [0]))

Enregistrez les modifications et redémarrez le serveur. Allez à la page d'inscription et entrez le prénom, adresse électronique et mot de passe et cliquez sur le S'inscrire bouton. Lorsque la création de l'utilisateur est réussie, vous pourrez voir un message dans la console de votre navigateur..

"message": "Utilisateur créé avec succès!"

Envelopper

Dans ce tutoriel, nous avons vu comment commencer à créer une application Web en utilisant Flacon en python, MySQL et le Flask-MySQL extension. Nous avons créé et conçu les tables de base de données et la procédure stockée, et mis en œuvre la fonctionnalité d'inscription. Dans le prochain tutoriel, nous allons passer à la série suivante en implémentant la fonctionnalité de connexion et certaines autres fonctionnalités..

Le code source de ce tutoriel est disponible sur GitHub.

Faites-nous savoir vos pensées dans les commentaires ci-dessous! 

Apprendre le python

Apprenez Python avec notre guide complet de tutoriel sur Python, que vous soyez débutant ou que vous soyez un codeur chevronné cherchant à acquérir de nouvelles compétences..