【问题标题】:How to check if my user's profile is complete in web2py?如何检查我的用户个人资料在 web2py 中是否完整?
【发布时间】:2015-10-22 18:44:18
【问题描述】:

我已经创建了一个“user_details”表,它的“user_id”字段已引用到默认的“auth_user”表。现在注册后,我向用户展示他的个人资料并要求他完成。但是,问题是如何在用户提交更新的配置文件后检查配置文件是否完整。

这是我的“user_details”表,

db.define_table('user_details',
    Field('user_id'),
    Field('gender',requires=IS_IN_SET(['Male','Female','Other'])),
    Field('phone_number',requires=IS_MATCH('\d{10}')),
    Field('preferred_mess'),
    Field('preferred_caterer'),
    Field('state_name','string'),
    Field('account_initial_balance'),
    Field('account_curr_balance'),
    Field('your_booking_preference',requires=IS_IN_SET(['''Don't Book Food Automatically''','Book Food Automatically'])))

【问题讨论】:

    标签: web2py


    【解决方案1】:

    您可以添加onvalidation函数来检查用户是否填写了所有字段。

    阅读 - onvalidation

    def form_validation():
        if not form.vars.gender:
            form.errors.gender = "Value not allowed"
        if not form.vars.phone_number:
            form.errors.phone_number = "Value not allowed"
        if not form.vars.preferred_mess:
            form.errors.preferred_mess = "Value not allowed"
        if not form.vars.preferred_caterer:
            form.errors.preferred_caterer = "Value not allowed"
        if not form.vars.state_name:
            form.errors.state_name = "Value not allowed"
        if not form.vars.account_initial_balance:
            form.errors.account_initial_balance = "Value not allowed"
        if not form.vars.account_curr_balance:
            form.errors.account_curr_balance = "Value not allowed"
        if not form.vars.your_booking_preference:
            form.errors.your_booking_preference = "Value not allowed"
    

    或者制作字段required=True

    db.define_table('user_details',
        Field('user_id', required=True),
        Field('gender',requires=IS_IN_SET(['Male','Female','Other']), required=True),
        Field('phone_number',requires=IS_MATCH('\d{10}'), required=True),
        Field('preferred_mess', required=True),
        Field('preferred_caterer', required=True),
        Field('state_name','string', required=True),
        Field('account_initial_balance', required=True),
        Field('account_curr_balance', required=True),
        Field('your_booking_preference',requires=IS_IN_SET(['''Don't Book Food Automatically''','Book Food Automatically']), required=True))
    

    您也可以使用 javascript 来完成。

    【讨论】:

    • 感谢您的回复。但是,我认为当我在数据库中插入一个字段值为“无”的行时,使用“必需”会带来问题,但“id”字段除外。有时我在表中创建了一个新行,而没有使用有效值对其进行初始化。这就是为什么我认为您的第一个解决方案与我的上下文更相关。谢谢。
    • required 参数强制它在 web2py 输入上,而不是在数据库级别。如果你申请notnull=Trueas a parameter,你应该仍然可以插入数据。不是 all data input 使用 web2py 架构进行验证。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-16
    • 2016-10-19
    • 2018-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多