ヌルポインター親衛隊

社内でひとりエンジニアやってます。

Flaskのurl_for()の使い方備忘録

Flaskでアプリケーションを作成する際、Template(*.htmlのファイル)内でhref="hoge.html"みたいな感じで書く方法がある。
じゃなくて、Flaskのurl_for()を埋め込んでしまって、受け取った文字列のメソッドを発火、メソッド内でテンプレートをreturnするという書き方ができる(はず)。

from flask import Flask, render_template, url_for

app = Flask(__name__)

@app.route("/")
def index():
    return render_template("index.html")

def hoge():
    return "hoge"
<html>
<body>
    <a href={{url_for("hoge")}}>ほげほげのページ</a>
</body>
<html>

このとき次のことに注意。

  • url_forはちゃんとimportする
  • url_forの引数に与えるメソッド名はダブルクォーテーションでくくる
  • もしもBlueprintを使ってアプリケーションを分割している場合は、[object name].[method name]とすること

というかちょっと気になったんですけど、皆さんtemplateにurl埋め込んでるんですかね?
それともurl_forを埋め込んで、view側でルーティングしてますか?どんなふうに書いてるの。