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.
Ein Status, in dem Python 3 auf einem Mac installiert ist und eine virtuelle Umgebung mit venv erstellt wird.
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)
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.
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.
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>
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, 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.
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.
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)
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.
Als nächstes einfache Parameterverriegelung.
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
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)
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
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.
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)
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