1. ホーム
  2. python

[解決済み] Flaskで動的なURLを生成する方法は?

2022-02-27 14:14:01

質問

データベース内にいくつかのレコードがあり、それをURLの形にしたいのですが。

mysite.com/post/todays-post-will-be-about

todays-post-will-be-about はデータベースから取得されます。

flaskでこれを実現する方法はないでしょうか?

どのように解決するのですか?

views.pyの関数内に変数名を記述することができます。例えば

# you can also use a particular data type such as int,str
# @app.route('post/<int:id>', methods=['GET', 'POST'])
@app.route('post/<variable>', methods=['GET'])
def daily_post(variable):
    #do your code here
    return render_template("template.html",para1=meter1, para2=meter2)

データベースの情報をサイトに表示させるために、テンプレートにパラメータを渡すことになります。そこで、テンプレートの中で、それらのパラメータを次のように参照することになります。

<td>Post Author: {{ para1.author }}</td>
<td>Post Body: {{ para1.body }}</td>
<td>Date Posted: [{{ para2 }}] times</td>

それから mysite.com/post/anything_here にアクセスすると、 'anything_here' はあなたの関数に入り、必要に応じて評価されるでしょう。誰かが手動で投稿を入力しようとしたときのために、404ページの処理もセットアップしておくとよいでしょう。

@app.errorhandler(404)
def not_found_error(error):
    return render_template('404.html', pic=pic), 404