セッションに問題があります
ユーザーがドロップダウンメニューからsmthを選択した後、その値をセッションに挿入する必要があります。モデルの認証テーブルのデータベースにアクセスするには、その値が必要です(request.varから読み取ると、ログイン/登録フォームに移動するとクラッシュします)。セッションのどこに値を挿入し、どのように(ビュー、コントローラー)挿入しますか。
今のところ私はクッキーを使ってそれを解決しましたが、それは最も安全ではありません。
任意の提案=
ありがとうございました
セッションは、Storageクラスの別のインスタンスです。たとえば、セッションに保存されているものは何でも:
session.myvariable = "hello"
後で取得できます:
a = session.myvariable
言い換えれば、それはすでにそこにあります-それに変数を割り当てるだけです。データベースを使用したい場合は、モデルを介してDBにセッションテーブルを定義する必要があります。web2pyマニュアルからの引用:
たとえば、データベースにセッションを保存するには、次のようにします。
session.connect(request, response, db, masterapp=None)ここで、dbは開いているデータベース接続の名前です(DALによって返されます)。これは、セッションをファイルシステムではなくデータベースに保存することをweb2pyに通知します。session.connectは、db = DAL(...)の後で、セッションを必要とする他のロジック(Authの設定など)の前に配置する必要があります。
web2pyはテーブルを作成します:
db.define_table('web2py_session', Field('locked', 'boolean', default=False), Field('client_ip'), Field('created_datetime', 'datetime', default=now), Field('modified_datetime', 'datetime'), Field('unique_key'), Field('session_data', 'text'))cPickledセッションをsession_dataフィールドに格納します。
オプションmasterapp=Noneは、デフォルトで、実行中のアプリケーションのrequest.applicationに名前が含まれるアプリケーションの既存のセッションを取得しようとするようにweb2pyに指示します。
2つ以上のアプリケーションでセッションを共有する場合は、masterappをマスターアプリケーションの名前に設定します。