⛳
Flask全部
Mac前提
インストール
python3 -m pip install flask
最初のアプリ
コード(app.py
)
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "hello"
app.run(host="0.0.0.0", port=5000, debug=True)
実行
python3 app.py
ブラウザーで http://localhost:5000 を開く
パスパラメータを渡す
コード(app.py
)
from flask import Flask
app = Flask(__name__)
@app.route("/<msg>")
def hello(msg):
return msg
app.run(host="0.0.0.0", port=5000, debug=True)
実行
python3 app.py
ブラウザーで http://localhost:5000/hey を開く
テンプレート
テンプレートファイル(templates/hello.html
)
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf8">
<title>hello world</title>
</head>
<body>
<h1>hello</h1>
</body>
</html>
コード(app.py
)
from flask import Flask, render_template
app = Flask(__name__)
@app.route("/")
def hello():
return render_template("hello.html")
app.run(host="0.0.0.0", port=5000, debug=True)
実行
python3 app.py
ブラウザーで http://localhost:5000 を開く
テンプレートに値を渡す
テンプレート(templates/hello.html
)
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf8">
<title>hello world</title>
</head>
<body>
<h1>{{ msg }}</h1>
</body>
</html>
コード(app.py
)
from flask import Flask, render_template
app = Flask(__name__)
@app.route("/")
def hello():
return render_template("hello.html", msg="hi")
app.run(host="0.0.0.0", port=5000, debug=True)
実行
python3 app.py
ブラウザーで http://localhost:5000 を開く
フォームの値を受け取る
コード(app.py
)
from flask import Flask, render_template, request
app = Flask(__name__)
@app.route("/form", methods=["GET"])
def get_form():
return render_template("form.html")
@app.route("/form", methods=["POST"])
def post_form():
msg = request.form["msg"]
return msg
app.run(host="0.0.0.0", port=5000, debug=True)
フォーム(form.html
)
<form action="http://localhost:5000/form" method="POST">
msg: <input type="text" name="msg">
<button type="submit">送信</button>
</form>
実行
python3 app.py
ブラウザーで http://localhost:5000/form を開く
フォームからmsgに値を入れてボタンをクリック
テンプレートでのif
コード(app.py
)
from flask import Flask
app = Flask(__name__)
@app.route("/<msg>")
def hello(msg):
return render_template("if.html", msg=msg)
app.run(host="0.0.0.0", port=5000, debug=True)
テンプレート(templates/if.html
)
<body>
{% if msg == "hello" %}
<h1>Hello</h1>
{% else %}
<h1>Good Bye!</h1>
{% endif %}
</body>
実行
python3 app.py
ブラウザーで http://localhost:5000/hello を開く
パラメータを変えてみる
テンプレートでのfor
コード(app.py
)
from flask import Flask
app = Flask(__name__)
@app.route("/<msg>")
def hello(msg):
return render_template("for.html")
app.run(host="0.0.0.0", port=5000, debug=True)
テンプレート(templates/for.html
)
<body>
{% for i in range(5) %}
<h1>{{ i }}</h1>
{% endfor %}
</body>
ブラウザーで http://localhost:5000
データベース接続
MongoDBを使う
MongoDB
インストール
brew install mongodb-community
起動
brew services start mongodb-community
PyMongo
インストール
python3 -m pip install pymongo
コード
from flask import Flask, request, render_template
from pymongo import MongoClient
from bson.json_util import dumps
app = Flask(__name__)
mongo = MongoClient("mongodb://{username}:{password}@{server}:{port}/{database}")
db = mongo["db_name"]
@app.route("/users", methods=["GET"])
def get_users():
users = db.users.find()
return render_template("users.html", users=users)
@app.route("/users", methods=["POST"])
def create_user():
user = {}
user["id"] = request.form["id"]
user["name"] = request.form["name"]
db.users.insert_one(user)
return "created", 200
@app.route("/users/<id>", methods=["GET"])
def get_user(id):
user = db.users.find_one({"id":id})
return dumps(user), 200
@app.route("/users/<id>", methods=["PUT"])
def update_user(id):
user = {}
user["name"] = request.form["name"]
db.users.update_one({"id":id}, {"$set":{"name":user["name"]}})
return "updated", 200
@app.route("/users/<id>", methods=["DELETE"])
def delete_dser(id):
db.users.delete_one({"id":id})
return "deleted", 200
app.run(host="0.0.0.0", port=5000, debug=True)
テンプレート(users.html
)
<html>
<body>
<ul>
{% for user in users %}
<li> {{ user.userid }} - {{ user.name }}</li>
{% endfor %}
</ul>
</body>
</html>
起動
python3 app.py
ブラウザーで http://localhost:5000/hello/taro を開く
Discussion