[PYTHON] Faisons une application WEB pour l'annuaire téléphonique avec flacon Partie 1

introduction

Salut, je m'appelle Nioh. Je suis actuellement comptable dans une petite et moyenne entreprise. Afin de résoudre le problème de ne pas savoir quoi demander et où demander, j'ai décidé de créer un répertoire en tant qu'application WEB afin qu'il puisse être facilement partagé.

** "Pourquoi n'utilisez-vous pas Google Spreadsheet?" **

On m'a immédiatement dit. C'est vrai. Je l'ai toujours implémenté car je voulais savoir comment gérer des modules tels que Flask.

fonction nécessaire

  1. Authentification de base → Je veux implémenter au moins

Je me suis demandé si les fonctions ci-dessus étaient nécessaires.

Cependant, pour être honnête, il était inévitable que je tombe sur la certification de base, donc je vais d'abord fabriquer des pièces en fonction du flux d'utilisation.

  1. Connectez-vous
  2. Affiché
  3. Recherche
  4. Inscrivez-vous

Plate-forme

Je voulais le faire avec python, donc je vais le faire en utilisant Flask.

Flask est un framework d'application WEB, et il semble que ceci ou Django soit utilisé pour créer des applications WEB avec Python.

Utilisateur ⇔ Répertoire DB

En tant qu'intermédiaire

Utilisateur ⇔ Page d'accueil ⇔ Python (Flask) ⇔ Annuaire DB

Ça marche comme ça.

J'ai pensé qu'il serait facile de comprendre l'installation, etc. en regardant ici.

helloworld.py



from flask import Flask
app = Flask(__name__) #Initialisation

@app.route(/) 
#Routage (par exemple http://www.name.com/Application sur laquelle exécuter
# http://www.name.com/Si vous souhaitez exécuter par vous-même, cliquez ici
# @app.route(/self)Changer pour

def hello_world():
   return "Hello World!"

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

Si vous faites cela dans le terminal, c'est OK

1. À propos de la connexion

Tout d'abord, reportez-vous à Authentification de base avec flask.

pip install Flask-HTTPAuth

La destination du lien est entièrement en minuscules, mais il semble que les majuscules soient également mélangées.

Surprenant? Facile de

La source ressemble à ceci

Basic_auth.py



from flask import Flask
from flask_httpauth import HTTPBasicAuth

app = Flask(__name__)
auth = HTTPBasicAuth() #Créer un objet auth

users = {
    "john": "hello",
    "susan": "bye"
}

@auth.get_password #Décorer
def get_pw(username):
    if username in users:
        return users.get(username)
    return None

@app.route('/')
@auth.login_required #
def index():
    return "Hello, %s!" % auth.username()

if __name__ == '__main__':
    app.run()

Je vais l'utiliser avec une légère modification.

2. Affichage

Implémentez DB⇔Browser.

Tout d'abord, à propos de Jinja2 Jinja2 est un moteur de template utilisé par Flask. Écrivez à l'intérieur du HTML, Créez un dossier «templates» dans le dossier APP, et mettez-y le HTML écrit avec Jinja2.

---app.py ------ | - dossier de modèles ------|--templates.html

J'ai l'impression de le préparer et de jouer avec templates.html.

Pour être honnête, souvenons-nous simplement de {% for ~~%} ~~ {% endfor%}. Le reste est utilisé lors de l'imbrication.

Ensuite, à propos de DB Utilisez le module de sqlite3. Pour cela, j'ai fait référence à python-izm. Pour savoir comment utiliser SQLITE, je me suis référé à DBonline.

Après avoir créé une table avec SQLITE Browser, j'ai pensé que je n'avais pas besoin d'apprendre à utiliser Sqlite sauf ** SELECT et INSERT UPDATE au début. ** **

Je pense que je pourrai l'utiliser le cas échéant.

Seule la syntaxe est apprise pour le module sqlite3.

sample.py



import sqlite3

conn = sqlite3.connect("[Nom et chemin de la base de données]")
cursor = conn.cursor()

cursor.execute("[Syntaxe SQL]")

conn.commit() #Lorsque vous enregistrez l'instruction select avec ceci, c'est OK car ce n'est qu'une référence
cursor.close()
conn.close()

Ceci est un ensemble. [Conseils] Lorsque vous placez une variable dans la syntaxe SQL, par exemple, ["select? From tables", (taple)] est utilisé pour affecter la variable. Lorsqu'il n'y a qu'une seule variable, elle échouera si vous ne créez pas de taple au format (variable **, **) même s'il n'y en a qu'une.

Je l'ai fait comme ça.

app.py


#-*- coding:utf-8 -*-
#! usr/env/python

from flask import Flask,render_template
import csv
import sqlite3
from flask_httpauth import HTTPBasicAuth

app=Flask(__name__)
auth = HTTPBasicAuth()

users = {"john":"hello","susan":"bye"}

@auth.get_password
def get_pw(username):
    if username in users:
        return users.get(username)
    return None

@app.route("/")

def hello():
    return ("hello world")

@app.route("/index")
@auth.login_required

def index():
    conn = sqlite3.connect("sampledb.db")
    cursor = conn.cursor()

    cursor.execute("select * from contacts ")
    contacts_data = cursor.fetchall() #À emporter dans la liste

    cursor.close()
    conn.close()
    return render_template("index.html",contacts = contacts_data)

if __name__ == '__main__':
    app.run(debug=True)

index.html


<!DOCTYPE html>

<html lang="en">
  <head>
      <meta charset = "utf-8">
      <meta http-equiv="X-UA-Compatible" content="IE=edge">
      <meta name="viewport" content="width=device-width,initial-scale=1">
      <script src="http://code.jquery.com/jquery-1.11.1.min.js"></script>
      <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7" crossorigin="anonymous">
      <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js" integrity="sha384-0mSbJDEHialfmuBBQP6A4Qrprq5OVfW37PRR3j5ELqxss1yVqOtnepnHVP9aJ7xS" crossorigin="anonymous"></script>
  </head>
  <body>
    <div class="container">
      <div class="header">
        <h3 class="text-muted">Annuaire</h3>
        <div class = "table-responsive">
        <table class = "table table-bordered table-hover">
          <tr>
            <th>ID</th>
            <th>Name</th>
            <th>Number</th>
            <th>Comment</th>
          </tr>
          {% for num in contacts %}
          <tr>
            {% for name in num %}
              <td>{{name}}</td>
            {% endfor %}
          </tr>
          {% endfor %}
        </table>
      </div>
      </div>
    </div>
  </body>
</html>

Vous avez maintenant implémenté l'authentification de base et la partie d'affichage. Cliquez ici pour en savoir plus ↓

Essayez de créer une application WEB pour l'annuaire téléphonique avec flask Partie 2

Ce que je pensais

En fait, je ne connais pas grand-chose à la sécurité, alors apprenez-moi d'une manière simple à comprendre.

Recommended Posts

Faisons une application WEB pour l'annuaire téléphonique avec flacon Partie 1
Faisons une application WEB pour l'annuaire téléphonique avec flacon Partie 2
Faisons une application WEB pour l'annuaire téléphonique avec flacon Partie 3
Faisons une application WEB pour l'annuaire téléphonique avec flacon Partie 4
Créons une application Web de conversion A vers B avec Flask! De zéro ...
Créez un framework Web avec Python! (1)
Créez un framework Web avec Python! (2)
[GCP] Procédure de création d'une application Web avec Cloud Functions (Python + Flask)
Faisons une application qui affaiblit les nerfs avec Vue.js et Django-Rest-Framework [Partie 3] ~ Implémentation de la faiblesse nerveuse ~
Développement d'applications Web avec Flask
[Jouons avec Python] Créer un livre de comptes de ménage
Faisons une application qui affaiblit les nerfs avec Vue.js et Django-Rest-Framework [Partie 6] ~ Authentification utilisateur 2 ~
Faisons une application qui affaiblit les nerfs avec Vue.js et Django-Rest-Framework [Partie 5] ~ Authentification des utilisateurs ~
Application Web avec Python + Flask ② ③
Application Web avec Python + Flask ④
J'ai créé une application de livre simple avec python + Flask ~ Introduction ~
Créer une application Web avec Flask ②
Faisons une interface graphique avec python.
Faisons une rupture de bloc avec wxPython
Créer une application Web avec Django
Créer une application Web avec Flask ①
Faisons un graphe avec python! !!
Faisons un spacon avec xCAT
Créer une application Web avec Flask ③
Créer une application Web avec Flask ④
Créer une application Web de type Flask / Bottle sur AWS Lambda avec Chalice
Faisons une discussion WEB en utilisant WebSocket avec AWS sans serveur (Python)!
Faisons un jeu de shiritori avec Python
Créez un simulateur de gacha rare avec Flask
Faisons la voix lentement avec Python
Faisons un langage simple avec PLY 1
[Python] Une application web rapide avec Bottle!
Créez une application Web simple avec Flask
Exécutez une application Web Python avec Docker
Créer un service Web avec Docker + Flask
Faisons une IA à trois yeux avec Pylearn 2
Faisons un bot Twitter avec Python!
Faisons un plug-in backend pour Errbot
J'ai fait une application WEB avec Django
[Streamlit] Je déteste JavaScript, donc je crée une application Web uniquement avec Python
Flask + PyPy J'ai pris un benchmark de vitesse avec Blueprint pour le Web à grande échelle
Je souhaite créer une application Web en utilisant React et Python flask
Créez un simple générateur d'images par points avec Flask
Lancer un serveur Web avec Python et Flask
Remplaçons UWSC par Python (5) Faisons un robot
Faisons un module pour Python en utilisant SWIG
Acquisition de données à partir de l'API d'analyse avec l'application Web Client API Google pour python Partie 2
Cours de production d'applications Web appris avec Flask of Python Partie 2 Chapitre 1 ~ Échange JSON ~
Créons une application qui affaiblit les nerfs avec Vue.js et Django-Rest-Framework [Partie 2] ~ Configuration de Vue ~
Faisons une application qui affaiblit les nerfs avec Vue.js et Django-Rest-Framework [Partie 1] ~ Django setup ~
Créons une application capable de rechercher des images similaires avec Python et Flask Part1
Créons une application capable de rechercher des images similaires avec Python et Flask Part2
Faire un bot d'analyse morphologique de manière lâche avec LINE + Flask
Comment faire un jeu de tir avec toio (partie 1)
Essayez de créer un jeu simple avec Python 3 et iPhone
Analyser et visualiser JSON (application Web ⑤ avec Python + Flask)
[Partie 2] Construisons un serveur Web avec EC2 Linux