[PYTHON] Flacon facile à utiliser

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.

Préparation et utilisation facile

environnement

Un état dans lequel Python 3 est installé sur Mac et un environnement virtuel est créé avec venv.

Installation

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)

Courir

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.

Utilisez Jinja2

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.

Modèle commun

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>

Page individuelle

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 %}

Modifier hello.py

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 /.

Utiliser DB (MySQL)

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.

Implémentation logique

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)

Changement de page individuel

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é.

Lien de paramètres

Ensuite, un simple verrouillage des paramètres.

De l'URL

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

De POST

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)

De GET

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

Renvoie JSON

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.

Renvoie un dictionnaire généré manuellement

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)

Renvoie le résultat de DB

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

Flacon facile à utiliser
Facile à utiliser SQLite3
E-Cell 4 Intermédiaire facile à utiliser
E-Cell 4 édition débutant facile à utiliser
Utilisez Flask pour exécuter des fichiers externes
E-Cell 4 Advanced Edition facile à utiliser
Bloc-notes Jupyter facile à utiliser (Python3.5)
Un moyen simple d'utiliser Wikipedia avec Python
Connaissances minimales pour utiliser Form avec Flask
Rendons le laboratoire Jupyter facile à utiliser
Comment utiliser xml.etree.ElementTree
Comment utiliser Python-shell
Remarques sur l'utilisation de tf.data
Comment utiliser virtualenv
Comment utiliser Seaboan
Comment utiliser la correspondance d'image
Comment utiliser Pandas 2
Un moyen simple d'utiliser Python 2.7 sur Cent OS 6
Comment utiliser Virtualenv
Comment utiliser pytest_report_header
Comment utiliser partiel
Comment utiliser Bio.Phylo
Comment utiliser SymPy
Comment utiliser x-means
Comment utiliser WikiExtractor.py
Comment utiliser IPython
Comment utiliser virtualenv
Comment utiliser Matplotlib
Comment utiliser iptables
Comment utiliser numpy
Raisons d'utiliser le journal
Comment utiliser TokyoTechFes2015
Comment utiliser venv
Comment utiliser le dictionnaire {}
Comment utiliser Pyenv
Comment utiliser la liste []
Comment utiliser python-kabusapi
Python-Comment utiliser pyinstaller
Comment utiliser OptParse
Comment utiliser le retour
Comment utiliser pyenv-virtualenv
Comment utiliser imutils
[Introduction à WordCloud] Il est facile à utiliser même avec Jetson-nano ♬
Comment utiliser Qt Designer
Comment utiliser la recherche triée
[gensim] Comment utiliser Doc2Vec
python3: Comment utiliser la bouteille (2)
Comprendre comment utiliser django-filter
Utilisez MeCab pour récupérer les lectures
[Python] Comment utiliser la liste 1
Analyse QSM-Comment utiliser MEDI-
Comment utiliser FastAPI ③ OpenAPI
Flux de contrôle facile à lire
Comment utiliser Python Argparse
Rendre avec la syntaxe facile
Comment utiliser IPython Notebook
Comment utiliser Pandas Rolling
[Note] Comment utiliser virtualenv