Un framework léger pour Python. Utilisation minimale de Flask. Pour le moment, vérifiez la plage que vous utilisez et notez.
Le reste peut être compris en faisant Quick Start. Si vous êtes une personne Django, veuillez également visiter ici.
Un état dans lequel Python 3 est installé sur Mac et un environnement virtuel est créé avec venv.
pip install Flask
Hello World
Créez un dossier de travail. Tout va bien pour le moment.
cd
mkdir flask
cd flask
Écrivez le code avec le nom hello.py.
hello.py
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
name = "Hello World"
return name
@app.route('/good')
def good():
name = "Good"
return name
##la magie
if __name__ == "__main__":
app.run(debug=True)
Essayez de l'exécuter.
python hello.py
Essayez d'accéder à l'URL suivante.
http://localhost:5000/ http://localhost:5000/good
Il a été affiché en toute sécurité. Facile.
Flask est livré avec un moteur de template appelé Jinja2 en standard, alors utilisons-le. Créez un dossier appelé modèles. Mettez le html là-bas.
D'abord du modèle commun. Pieds de page et en-têtes. Je vais couper les coins ronds ici. Le style d'écriture est très similaire à Django.
layout.html
<!doctype html>
<html>
<head>
<title>{{ title }}</title>
</head>
<body>
{% block content %}
<!--Écrivez le contenu principal ici-->
{% endblock %}
</body>
</html>
Vient ensuite une page individuelle. Définissez le contenu de {% block content%}.
hello.html
{% extends "layout.html" %}
{% block content %}
<h3>Hello</h3>
Bonjour.{{ name }}M.
{% endblock %}
Modifiez hello.py pour utiliser le modèle et transmettre des variables.
hello.py
from flask import Flask, render_template #ajouter à
app = Flask(__name__)
@app.route('/')
def hello():
name = "Hoge"
#return name
return render_template('hello.html', title='flask test', name=name) #Changement
##la magie
if __name__ == "__main__":
app.run(debug=True)
Après avoir apporté des modifications, essayez d'accéder à http: // localhost: 5000 /.
Comme c'est un gros problème, je vais essayer d'utiliser la base de données (MySQL). Tout d'abord, jouons avec hello.py. PyMySQL est utilisé pour se connecter à MySQL.
Si vous ne l'avez pas encore installé
pip install PyMySQL
Veuillez installer avec.
Ce n'est pas tellement logique, mais je l'ai fait comme suit. Je pense qu'il est préférable d'utiliser des parties communes pour les informations de connexion, etc., ou d'utiliser la clause with, mais pour le moment. .. ..
hello.py
from flask import Flask, render_template #ajouter à
import pymysql #ajouter à
app = Flask(__name__)
@app.route('/')
def hello():
#db setting
db = pymysql.connect(
host='localhost',
user='root',
password='root',
db='testdb',
charset='utf8',
cursorclass=pymysql.cursors.DictCursor,
)
cur = db.cursor()
sql = "select * from members"
cur.execute(sql)
members = cur.fetchall()
cur.close()
db.close()
#return name
return render_template('hello.html', title='flask test', members=members) #Changement
##la magie
if __name__ == "__main__":
app.run(debug=True)
Affiche le contenu dans une boucle avec for. c'est simple.
hello.html
{% extends "layout.html" %}
{% block content %}
<h3>liste</h3>
<ul>
{% for member in members %}
<li>{{ member.name}} : {{ member.email }}</li>
{% endfor %}
</ul>
{% endblock %}
Ça s'est bien passé.
Ensuite, un simple verrouillage des paramètres.
moderne. Essayez d'obtenir la valeur de l'URL.
hello.py
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/hello/<name>')
def hello(name=None):
#return name
return render_template('hello.html', title='flask test', name=name)
##la magie
if __name__ == "__main__":
app.run(debug=True)
Essayez d'y accéder avec l'URL suivante.
http://localhsot:5000/hello/hoge
Vient ensuite POST. Le HTML du formulaire est omis. Créez normalement un message de à et essayez de publier. Si vous ne spécifiez pas la méthode, vous obtiendrez une erreur «Méthode non autorisée».
from flask import Flask, render_template, request #ajouter à
app = Flask(__name__)
@app.route('/hello', methods=['POST']) #La méthode doit être spécifiée
def hello():
if request.method == 'POST':
name = request.form['name']
else:
name = "no name."
return render_template('hello.html', title='flask test', name=name)
##la magie
if __name__ == "__main__":
app.run(debug=True)
Enfin, GET ou QueryString.
hello.py
from flask import Flask, render_template, request
app = Flask(__name__)
@app.route('/hello')
def hello():
name = request.args.get('name')
return render_template('hello.html', title='flask test', name=name)
##la magie
if __name__ == "__main__":
app.run(debug=True)
Essayez d'y accéder avec l'URL suivante.
http://127.0.0.1:5000/hello?name=hoge
Enfin, je voudrais retourner JSON. C'est facile si vous utilisez jsonify, mais il prend en charge les caractères japonais déformés et l'ordre de tri. Que ce soit correct ou non est subtil, mais pour le moment.
hello.py
from flask import Flask, render_template, request, jsonify #ajouter à
app = Flask(__name__)
app.config['JSON_AS_ASCII'] = False #Mesures contre les caractères japonais déformés
app.config["JSON_SORT_KEYS"] = False #Trier tel quel
@app.route('/hello')
def hello():
data = [
{"name":"Yamada"},
{"age":30}
]
return jsonify({
'status':'OK',
'data':data
})
##la magie
if __name__ == "__main__":
app.run(debug=True)
Je voudrais retourner le résultat SELECT de DB. Dans l'exemple ci-dessus, j'ai essayé de généraliser la partie des informations de connexion de la base de données.
hello.py
from flask import Flask, render_template, jsonify #ajouter à
import pymysql #ajouter à
app = Flask(__name__)
app.config['JSON_AS_ASCII'] = False #Mesures contre les caractères japonais déformés
app.config["JSON_SORT_KEYS"] = False #Trier tel quel
def getConnection():
return pymysql.connect(
host='localhost',
user='root',
password='root',
db='testdb',
charset='utf8',
cursorclass=pymysql.cursors.DictCursor,
)
@app.route('/')
def hello():
db = getConnection()
cur = db.cursor()
sql = "select * from members"
cur.execute(sql)
members = cur.fetchall()
cur.close()
db.close()
return jsonify({
'status':'OK',
'members':members
})
##la magie
if __name__ == "__main__":
app.run(debug=True)
Le JSON suivant sera retourné.
{
"status": "OK",
"members": [
{
"id": 1,
"name": "hoge",
"email": "[email protected]"
},
{
"id": 2,
"name": "foo",
"email": "[email protected]"
}
]
}
c'est tout. Je voudrais l'ajouter au besoin.
Recommended Posts