【Python】flaskを使ってwebアプリをつくる

Python

備忘メモにすぎない。気が向いたら丁寧にまとめる。

導入時における参考サイト

Webアプリ初心者のFlaskチュートリアル - Qiita
始めにWebアプリ開発初心者の私がFlaskと出会い、親しみ、成長する過程を描いたハートフルなストーリーです。やりながら書いているので、説明の8割がノリです。飽きたらやめます。飽きなかったら続…

Flaskで変数を文字列ではなくHTMLのタグとして読み込ませたいとき

テンプレート内で、div変数を| safe フィルターを使いsafeにする。これをやらないと文字列として連携されるのでhtmlタグが認識されない。

<body>
  {{ div | safe }}
</body>

pandasデータフレームをhtml変換する

to_htmlを使う。

# tblをhtmlに変換
contents_race_table = tbl.to_html()

# テーブル内にチェックボックスを仕込むときなどは
# そのままだとHTML表示向けにエスケープされてしまうので、escape=Falseで回避
contents_race_table = tbl.to_html(escape=False)

to_htmlを使うと長い文字列が勝手に省略される。それを防ぐためには、to_htmlの前に以下を差し込む

pd.set_option('display.max_colwidth', -1)
contents_race_table = tbl.to_html(escape=False)

セッションでデータを保持する

from flask import Flask, session
# secret_key
app.secret_key = 'himitsu'

# 書き込み
session['name'] = 'date'

# 読み込み
date = session.get('name')

secret_keyを設定しないとエラーになる。

RuntimeError: The session is unavailable because no secret key was set.  Set the secret_key on the application to something unique and secret.

同じname属性のフォームを複数受け取る

getlistで複数受け取ることができる。

<input type="checkbox" id="i1" name="check" value="1">
<input type="checkbox" id="i2" name="check" value="2"> 
@app.route('/', methods=['POST'])
def post():
 # 単体のとき
	p = request.form.get('check')
 # 複数のとき
 p = request.form.getlist('check')

おまけ

ちゃんと作りたい、知りたい人は読むべし。

コメント