昨日買うたTIVOOがかわいい。音も良い。
3/4の晩ご飯のおとも
Flaskクイックスタート
Django Reinhardt聴きながらFlask導入してるhttps://t.co/7feoom3cs5
— 夜戦 (@1plus1plus1plus) March 3, 2019
これを言いたかったそれだけではじめたFlask。
いやうそデコレータの記法ちゃんとわかりたかったからがほんと
まだ全然その目的にまで理解を深められていないけれど、ルーティングとか機能ごとにファイル分けなくても、
実行するPythonファイルそのものを中心に組み上げていけるようにもなってるのが面白いなあって思ってます。
あといちいちサーバ再起動させなくてもデバッグ動いてくれててなんか認識したら止めてくれる(要設定)のとかもちょっとうれしい。
.
クイックスタートを中心に据えてぼちぼち試し、リクエストオブジェクトの項まで。
とはいえ想定する挙動をいまいち把握しきれておらず、
具体例試してるひとの記事とかパクりながら機能を把握しようと試みている。
難しい記法があるわけではないんだと思う(Python2系で書かれていることにちょっと気をつければ多分大丈夫)けどどうにもそそっかしく……。
そんなわたくしでも、とりあえず決まったusernameとpassword打ち込んだらログインできるフォームを実現するまではできました。
.
start.py(名前はflask.py以外ならなんでも良いらしい)
from flask import Flask from flask import render_template, request, session import os app = Flask(__name__) # app.routeでルーティングの制御をしている? @app.route('/') def index(): return render_template('index.html') # methodsで宣言したリクエストしか受けないことに注意 @app.route('/hello', methods=['GET', 'POST']) def hello(): if request.method == 'POST': name = request.form['name'] else: name = 'no name' return render_template('hello.html', title='flask test', name=name) @app.route('/login', methods=['GET', 'POST']) def login(): error = None if request.method == 'POST': if request.form['username'] == 'yasen_chang' \ and request.form['password'] == 'yasen': name = request.form['username'] session['logged_in'] = True else: error = 'Invalid username/password' return render_template('login.html', name=name, error=error) if __name__ == '__main__': app.secret_key = os.urandom(12) # サーバ起動 app.run(debug=True)
HTMLまでもがめっちゃ雑だけど許されたい。
HTMLファイルは今回だとstart.pyと同階層にtemplateってディレクトリ構えてその中に放り込んでおけばOK。
index.html
<!doctype html> <title>Index from Flask</title> <form action="/hello" method="POST"> <p>hello</p> <input name="name"> <input type="submit"> </form> <form name="login" action="/login" method="POST"> <p>login</p> username:<input type="text" name="username"><br> password:<input type="password" name="password"><br> <input type="submit" value="login"> </form>
hello.html
<!doctype html> <title>Hello from Flask</title> {% if name %} <h1>Hello {{ name }}</h1> {% else %} <h1>Hello World!</h1> {% endif %}
login.html
<!doctype html> <title>Login from Flask</title> <h1>Login {{ name }}</h1>
この状態でpython3.7 start.py
みたいにPythonファイル実行し、
http://127.0.0.1:5000/ にアクセスするととりあえず下記のフォームが出てくる。
上図のように入力した状態でhelloの方のsubmitボタン押すとこんな感じ、
loginの方のsubmitボタン押すとこんな感じ。
たいした挙動でなくとも、リクエスト内容に応じた表示がなされるとじんわりうれしい。
※参考にした記事などなど、まとめてて気がついたけどassert文のあたり立ち返れてないなあ
[Python] assert文で超お手軽テスト - Qiita
はじめての Flask #2 ~POSTを受け取ろう~ - Qiita
ちょっとPython --Flaskでlogin!|donguri|note
.
もうちょい続きがあるようなのでちゃんと咀嚼しながら仕組みもわかっていきたい。
放送大学 入門微分積分(第05回)
微分法の基本公式。だいたいネイピア数がすごい。対数もすごい。
媒介変数表示の微分、媒介変数tを介してxとyとがあるとき、xとyそれぞれをtについて微分してただけなんだけどなんであれで円について考えていけるのかあんまりわかってない。
とりあえず曲線を表現しやすくなるものであると把握。
そのほかのつまみぐい。
エンジリッシュ
https://e-lish.io/desk/user/detail/3231
日付変わっちゃったからうろ覚えだけど40問くらい、単語問題。
3/4の晩ご飯
納豆ご飯とインスタントなお味噌汁、卵が新鮮なやつだったのでまずまず幸福。
コードを書いた1日は早い。