kuroの覚え書き

96の個人的覚え書き

webのviewからデータベースにアクセス

スクリプトにデータベースとやり取りするための仕組みを用意する。

@app.route('/', methods=['GET', 'POST'])
#/にアクセスしたら始動
def index():
    form = NameForm()
#NameFormからインスタンス作成
    if form.validate_on_submit():
        user = User.query.filter_by(username=form.name.data).first()
#Userテーブルからformで入力された名前と同じusernameを抽出し、最初に合致したものを選んでuserに格納
        if user is None:
#抽出の結果、該当なしだったら
            user = User(username=form.name.data)
            db.session.add(user)
#入力された名前をUserテーブルに登録
            session['known'] = False
#登録済みじゃなかった
        else:
            session['known'] = True
#登録済みだった
        session['name'] = form.name.data
#nameに入力された名前を入れる
        return redirect(url_for('index'))
#リダイレクトの処理
    return render_template('index.html', form=form, name=session.get('name'),
                           known=session.get('known', False))

index.htmlの該当部分ではknownがTrueかFalseかでメッセージが変わる


データベース作成、テーブル作成はpythonのコマンドでやる必要があると前に書いたが、登録をかんたんにする仕組みをスクリプトにしておくことは可能なようだ。

def make_shell_context():
    return dict(app=app, db=db, User=User, Role=Role)
manager.add_command("shell", Shell(make_context=make_shell_context))

まだよくわからない

そもそもこのアプリじゃあUserテーブルのnameカラムしか使ってない。