水曜日, 2月 17, 2021

Flask/wtform/SelectField フォームで入力チェックがうまくいかないとき

 Flask の wtform は入力値の自動チェックを行うので便利なんですが、自動チェックさせるとときどき引っかかるので面倒です。

SelectField を使うなら値はしっかり設定しておかねば入力値はすべてはじいてくれます。選択肢をデータベースからひいてきて自動設定している場合なぞ要注意です。

SelectField を設定する関数を書けば便利です。

def prepare_verseform(form):
try:
with engine.connect():
form.lang.choices = [(0, "-")]
form.genre.choices.append((0, '-'))
langlist = db.session.query(Lang).all()
for item in langlist:
form.lang.choices.append((item.id, item.lang))
genrelist = db.session.query(Genre).all()
for item in genrelist:
form.genre.choices.append((item.id, item.genre))
return form
except Exception as e:
return None
view raw form.py hosted with ❤ by GitHub

Form をインスタンス化しただけで form.validate() をついかけてしまうような間違いを防ぐことができます。

Qt: 外部プログラムを起動する

  Qt/C++ のアプリは、外部へ直接アクセスできます。これはネットアプリでは不可能な Qt のメリットです。 外部プログラムを起動することもできます。QProcess::startDetached() を使うと独立したプロセスを立ち上げることができます。 この QProces...