ルーティング

動的なルーティング

dir下にid_という変数でURLを作り、それをdir_pageという関数名で処理する例。
引数にid_が入る。

@app.route('/dir/<id_>')
def dir_page(id_):
# 処理

id_が数値型なら、

@app.route('/dir/<int:id_>')
def dir_page(id_):
# 処理

引数にはデフォルト値を与えることもできる。

@app.route('/dir/<id_>')
def dir_page(id_=1):
# 処理

複数の引数を取ることもできる。

@app.route('/dir/<id_>/<name_>')
def dir_page(id_, name_):
# 処理

複数のルーティング

1つの関数に対し、複数のルーティングを割り当てることができる。

@app.route('/path1')
@app.route('/path2')
def dir_page():
# 処理

コメント・シェア

静的ファイルの設置

プロジェクトのディレクトリにstaticフォルダを作り、その中にjsディレクトリ、さらに下にsample.jsを配置する例。

app.pyを

app = Flask(__name__, static_folder='static')

とする。

HTMLファイルでは

<script src={{ url_for('static', filename='js/sample.js') }}></script>

としてsample.jsを読み込む。

コメント・シェア

flashメッセージ

インポート

from flask import flash

appファイル内

スクリプト内では,必要な場所で単に

flash('ログアウトしました')

としておくだけでよい.

redirectrender_templateの引数として,flashについて何か書く必要はない.

HTMLファイル内

テンプレートディレクトリに入れたhtmlでは次のように書く.

{% with msgs = get_flashed_messages() %}
{% if msgs %}
<ul>
{% for msg in msgs %}
<li>{{ msg }}</li>
{% endfor %}
</ul>
{% endif %}
{% endwith %}

備考

flashメッセージのカテゴリーを利用して色をつけたり,フィルターをかけることができる.

コメント・シェア

分岐

@ルート名.route("パス", methods=["GET", "POST"])
def 関数名():
if request.method == "GET":
# 処理
elif request.method == "POST":
# 処理

request

GETで送信されたものを受け取るには,

request.args.get('変数名')

とします.

POSTで送信されたものを受け取るには,

request.form.get('変数名')

とします.

コメント・シェア

テンプレートからの一部差替え

ベースとなるファイルを読み込んで,base.html中のcontentのブロックのみ差替える例.

{% extends "base.html" %}
{% block content %}
<!-- 差替え -->
{% endblock %}

ファイル分割

index.htmlにfooter.htmlを途中で読み込ませる場合,index.htmlファイルの該当箇所で次のようにする.

{% include footer.html %}

コメント・シェア

  • page 1 of 1
著者の絵

ねこせんせい

One cat just leads to another.
(Ernest Hemingway)


色鉛筆塗り


校正室