[PYTHON] Einfach zu bedienende Flasche

Ein leichtes Framework für Python. Minimale Verwendung von Flask. Überprüfen Sie vorerst den von Ihnen verwendeten Bereich und machen Sie sich eine Notiz.

Der Rest kann durch Schnellstart verstanden werden. Wenn Sie eine Django-Person sind, besuchen Sie bitte auch hier.

Vorbereitung und einfache Bedienung

Umgebung

Ein Status, in dem Python 3 auf einem Mac installiert ist und eine virtuelle Umgebung mit venv erstellt wird.

Installation

pip install Flask

Hello World

Erstellen Sie einen Arbeitsordner. Alles ist vorerst in Ordnung.

cd
mkdir flask
cd flask

Schreiben Sie den Code mit dem Namen 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

##Magie
if __name__ == "__main__":
	app.run(debug=True)

Lauf

Versuchen Sie es auszuführen.

python hello.py

Versuchen Sie, auf die folgende URL zuzugreifen.

http://localhost:5000/ http://localhost:5000/good

Es wurde sicher angezeigt. Einfach.

Verwenden Sie Jinja2

Flask wird standardmäßig mit einer Template-Engine namens Jinja2 geliefert. Verwenden wir sie also. Erstellen Sie einen Ordner namens Vorlagen. Legen Sie das HTML dort.

Gemeinsame Vorlage

Zuerst aus der gemeinsamen Vorlage. Fuß- und Kopfzeilen. Ich werde hier Abstriche machen. Der Schreibstil ist Django sehr ähnlich.

layout.html


<!doctype html>
<html>
<head>
<title>{{ title }}</title>
</head>
<body>
{% block content %}
<!--Schreiben Sie hier den Hauptinhalt-->
{% endblock %}
</body>
</html>

Einzelne Seite

Als nächstes folgt eine einzelne Seite. Definieren Sie den Inhalt von {% block content%}.

hello.html


{% extends "layout.html" %}
{% block content %}
<h3>Hello</h3>
Hallo.{{ name }}Herr.
{% endblock %}

Ändern Sie hello.py

Ändern Sie hello.py, um die Vorlage zu verwenden und Variablen zu übergeben.

hello.py


from flask import Flask, render_template #hinzufügen

app = Flask(__name__)

@app.route('/')
def hello():
	name = "Hoge"
	#return name
	return render_template('hello.html', title='flask test', name=name) #Veränderung

##Magie
if __name__ == "__main__":
	app.run(debug=True)

Versuchen Sie nach dem Vornehmen von Änderungen, auf http: // localhost: 5000 / zuzugreifen.

Verwenden Sie DB (MySQL)

Da es eine große Sache ist, werde ich versuchen, die Datenbank (MySQL) zu verwenden. Lass uns zuerst mit hello.py spielen. PyMySQL wird verwendet, um eine Verbindung zu MySQL herzustellen.

Wenn Sie es noch nicht installiert haben

pip install PyMySQL

Bitte installieren mit.

Logikimplementierung

Es ist nicht so viel Logik, aber ich habe es wie folgt gemacht. Ich denke, es ist besser, gemeinsame Teile für Verbindungsinformationen usw. zu verwenden oder die with-Klausel zu verwenden, aber vorerst. .. ..

hello.py


from flask import Flask, render_template #hinzufügen
import pymysql #hinzufügen

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) #Veränderung

##Magie
if __name__ == "__main__":
	app.run(debug=True)

Individueller Seitenwechsel

Lassen Sie uns den Inhalt in einer Schleife mit for anzeigen. Es ist einfach.

hello.html


{% extends "layout.html" %}
{% block content %}
<h3>Aufführen</h3>
<ul>
{% for member in members %}
	<li>{{ member.name}} : {{ member.email }}</li>
{% endfor %}
</ul>
{% endblock %}

Es ging gut.

Parameterverknüpfung

Als nächstes einfache Parameterverriegelung.

Von der URL

modern. Versuchen Sie, den Wert von der URL abzurufen.

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) 
	
##Magie
if __name__ == "__main__":
	app.run(debug=True)

Versuchen Sie, mit der folgenden URL darauf zuzugreifen.

http://localhsot:5000/hello/hoge

Vom POST

Als nächstes kommt POST. Der HTML-Code des Formulars wird weggelassen. Machen Sie ein von, um normal zu posten, und versuchen Sie es. Wenn Sie die Methode nicht angeben, wird der Fehler "Methode nicht zulässig" angezeigt.

from flask import Flask, render_template, request #hinzufügen

app = Flask(__name__)

@app.route('/hello', methods=['POST']) #Methode muss angegeben werden
def hello():
	if request.method == 'POST':
		name = request.form['name']
	else:
		name = "no name."
	return render_template('hello.html', title='flask test', name=name) 

##Magie
if __name__ == "__main__":
	app.run(debug=True)

Von GET

Schließlich GET oder 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) 

##Magie
if __name__ == "__main__":
	app.run(debug=True)

Versuchen Sie, mit der folgenden URL darauf zuzugreifen.

http://127.0.0.1:5000/hello?name=hoge

Gibt JSON zurück

Zum Schluss möchte ich JSON zurückgeben. Es ist einfach, wenn Sie jsonify verwenden, aber es unterstützt verstümmelte japanische Zeichen und Sortierreihenfolge. Ob es richtig ist oder nicht, ist subtil, aber vorerst.

Gibt ein manuell generiertes Wörterbuch zurück

hello.py


from flask import Flask, render_template, request, jsonify #hinzufügen

app = Flask(__name__)
app.config['JSON_AS_ASCII'] = False #Maßnahmen gegen verstümmelte japanische Schriftzeichen
app.config["JSON_SORT_KEYS"] = False #Sortieren wie es ist

@app.route('/hello')
def hello():
	data = [
		{"name":"Yamada"},
		{"age":30}
	]
	return jsonify({
			'status':'OK',
			'data':data
		})

##Magie
if __name__ == "__main__":
	app.run(debug=True)

Gibt das Ergebnis von DB zurück

Ich möchte das SELECT-Ergebnis von DB zurückgeben. Im obigen Beispiel habe ich versucht, den Verbindungsinformationsteil der Datenbank zu verallgemeinern.

hello.py


from flask import Flask, render_template, jsonify #hinzufügen
import pymysql #hinzufügen

app = Flask(__name__)
app.config['JSON_AS_ASCII'] = False #Maßnahmen gegen verstümmelte japanische Schriftzeichen
app.config["JSON_SORT_KEYS"] = False #Sortieren wie es ist

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

##Magie
if __name__ == "__main__":
    app.run(debug=True)

Der folgende JSON wird zurückgegeben.

{
  "status": "OK", 
  "members": [
    {
      "id": 1, 
      "name": "hoge", 
      "email": "[email protected]"
    }, 
    {
      "id": 2, 
      "name": "foo", 
      "email": "[email protected]"
    }
  ]
}

das ist alles. Ich möchte es nach Bedarf hinzufügen.

Recommended Posts

Einfach zu bedienende Flasche
Einfach zu bedienendes SQLite3
Einfach zu bedienendes E-Cell 4 Intermediate
Einfach zu bedienende E-Cell 4 Beginner's Edition
Verwenden Sie Flask, um externe Dateien auszuführen
Einfach zu bedienende E-Cell 4 Advanced Edition
Einfach zu bedienendes Jupyter-Notebook (Python3.5)
Einfache Möglichkeit, Wikipedia mit Python zu verwenden
Mindestkenntnisse zur Verwendung von Form with Flask
Machen wir das Jupyter Lab einfach zu bedienen
Verwendung von xml.etree.ElementTree
Wie benutzt man Python-Shell
Hinweise zur Verwendung von tf.data
Verwendung von virtualenv
Wie benutzt man Seaboan?
Verwendung von Image-Match
Verwendung von Pandas 2
Einfache Möglichkeit, Python 2.7 unter Cent OS 6 zu verwenden
Verwendung von Virtualenv
Verwendung von pytest_report_header
Wie man teilweise verwendet
Wie man Bio.Phylo benutzt
Verwendung von SymPy
Wie man x-means benutzt
Verwendung von WikiExtractor.py
Verwendung von IPython
Verwendung von virtualenv
Wie benutzt man Matplotlib?
Verwendung von iptables
Wie benutzt man numpy?
Gründe für die Verwendung von log
Verwendung von TokyoTechFes2015
Wie benutzt man venv
Verwendung des Wörterbuchs {}
Wie benutzt man Pyenv?
Verwendung der Liste []
Wie man Python-Kabusapi benutzt
Python-How zur Verwendung von Pyinstaller
Verwendung von OptParse
Verwendung von return
Wie man Imutils benutzt
[Einführung in Word Cloud] Einfache Verwendung mit Jetson-nano ♬
Verwendung von Qt Designer
Verwendung der Suche sortiert
[gensim] Verwendung von Doc2Vec
python3: Verwendung der Flasche (2)
Verstehen Sie, wie man Django-Filter verwendet
Verwenden Sie MeCab, um Messwerte abzurufen
[Python] Verwendung von Liste 1
QSM-Analyse - Verwendung von MEDI-
Verwendung von FastAPI ③ OpenAPI
Einfach zu lesender Kontrollfluss
Wie benutzt man Python Argparse?
Machen Sie es mit der Syntax einfach
Verwendung von IPython Notebook
Wie man Pandas Rolling benutzt
[Hinweis] Verwendung von virtualenv