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.
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.
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
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.
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
En fait, je ne connais pas grand-chose à la sécurité, alors apprenez-moi d'une manière simple à comprendre.
Recommended Posts