CheatSheet》Flask (1)
Flask, jinja2チートシート。毎度0から思い出し思い出しでアホだから、コピペして使う用。
基本のひな形:: app.py
固定URL
from flask import Flask, render_template app = Flask(__name__) # http://127.0.0.1:5000/ @app.route('/') def index(): # ./templates/index.html を呼ぶ return render_template('index.html') if __name__ == '__main__': app.run(debug=True)
debug=True
にすると
- ソース変更したら自動リロードされる
- エラー発生時、ブラウザ上にエラー情報を表示して、デバッグ機能が使える。
- デバッグにはPINを入力する。PINはコンソール側に
* Debugger PIN: 175-669-921
のように出るのでそれを入れる。
- デバッグにはPINを入力する。PINはコンソール側に
動的URL、パラメータ受け渡し
class UserInfo: def __init__(self, name, age): self.name = name self.age = age # http://127.0.0.1:5000/user/TARO/25 @app.route('/home/<string:name>/<int:age>') def home(name, age): login_user = UserInfo(name, age) return render_template('home.html', login_user=login_user, is_login=True)
基本のひな形:: jinja2テンプレ側
templates/home.html
{% extends "base.html" %} {% block title %}Home{% endblock %} {%block content %} {% if is_login %} <p>{{ "%s(%s歳)"|format(login_user.name,login_user.age) }}さんがログインしました。</p> {% else %} <p>ログインしていません。</p> {% endif %} {% endblock %}
templates/base.html
<!DOCTYPE html> <html> <head lang="ja"> <meta charset="utf-8"> <title>{% block title %}初期値だほにゃらら{% endblock %}</title> <link rel="stylesheet" href="/common/style.css"> </head> <body> {%block content %} {% endblock %} </body>
<!-- コメント文 -->
{# templates/userlist.html #}
<!-- Extend元の値を使う --> {% block title %}Home {{ super() }}{% endblock %} # こうなる→ <title>Home初期値だほにゃらら</title>
<!-- ループ -->
{% for user in users %}
{{ user.name }}さん - {{ user.age }}歳
{% endfor %}
<!-- if文 --> {% if 'Hanako' in users %} <p>Hanako さんはメンバーです</p> {% else %} <p>Hanako さんはメンバーではありません</p> {% endif %}
<!-- 組込フィルター, パイプ -->
#users_name = ['Taro', 'Jiro', 'Sabro', 'Hanako']
アルファベット順の先頭の人は {{ users_name | sort|first }} 、
ランダムなひとりは{{ users_name | random }}です。