1

1 つのアプリケーションで、ユーザーとチューターの 2 種類のアカウントを作成する必要があります。それらのそれぞれは、データベース内の異なるテーブルで定義されたユーザー/チューターアカウントを登録/ログイン/...できるはずです。

例えば

[app]/user/registerフィールドを含むフォームをusername, email, password, hobby [app]/tutor/register提供する必要があります: フィールドを含むフォームを提供する必要があります:username, email, pass, name, surname, telephone

Web2py 認証サービスauth_userでは、カスタマイズ可能なテーブルを使用できます。1 つのアプリケーションでコントローラに応じて 2 つのテーブルを使い分ける方法はありますか?

フィールドauth.settings.table_userには auth_table の参照が含まれていますが、おそらくこの目的には使用しないでください。

4

1 に答える 1

1

Auth システムは、このように動作するようには設計されていません。代わりに、両方のユーザー タイプのすべてのフィールドを 1 つのauth_userテーブルに配置し、コンテキストに応じて、またはフィールドの属性を選択的に設定することreadableをお勧めします。writableTrueFalse

Auth を定義するモデル ファイル内:

user_extra_fields = [Field('hobby'), ...]
tutor_extra_fields = [Field('telephone', ...]

auth.settings.extra_fields['auth_user'] = (
    [Field('user_type', requires=IS_IN_SET(['User', 'Tutor']))] +
    user_extra_fields + tutor_extra_fields)

Auth 関数を管理するコントローラーで:

def user():
    if request.args(0) in ['register', 'profile']:
        hidden_fields = (user_extra_fields if request.args(1) == 'tutor'
                         else tutor_extra_fields)
        for field in hidden_fields:
            field.readable = field.writable = False
    return dict(form=auth())
于 2013-06-29T19:57:01.390 に答える