web2py数据结构中如何设置IS_NOT_EMPTY和字符串(不包括0-9)
How to set IS_NOT_EMPTY and string (not included 0-9) in web2py data structure
我正在开发 web2py - 模型 - db_testing.py pythonanywhere.com
下面的代码 运行 成功:
# -*- coding: utf-8 -*-
db = DAL('sqlite://storage.sqlite')
db.define_table('registration',
Field('firstname', requires=IS_NOT_EMPTY(error_message='Should not left blank')),
Field('lastname', requires=IS_NOT_EMPTY()),
Field('gender', requires=IS_IN_SET(['Male', 'Female'])),
Field('birthday', 'date'),
Field('email', requires = IS_EMAIL(error_message='invalid email!')),
Field('salary', 'integer'),
Field('seniority', 'integer')
)
但是第一个字段'firstname'只能防止填表不能留空。它无法验证输入是 a-z 还是 A-Z。
最后一个字段'seniority'可以保证填表必须是0-9,但不能阻止填表不留空
如何设置这两个要求(IS_NOT_EMPTY 和 error_message 并确保输入是字符串/整数)?
有什么想法吗?
判断是否为字符串:if isinstance(firstname, str)
判断是否为空:可以if firstname != ''
或if firstname
;在 Python 中,空对象在用作布尔值时被视为“False”。要检查它是否是字母字符,你可以这样做 if firstname.isalpha()
.
如 documentation 中所述,Field
的 requires
属性可以是验证器列表。所以,你可以这样做:
Field('firstname', requires=[IS_NOT_EMPTY(), IS_ALPHANUMERIC()])
要限制为仅包含字母,请将 IS_MATCH
与正则表达式一起使用:
Field('firstname', requires=[IS_NOT_EMPTY(), IS_MATCH('^[a-zA-Z]+$')])
上面,你不一定需要IS_NOT_EMPTY
验证器,因为IS_MATCH
中的正则表达式至少需要一个字母,但你可能想保留IS_NOT_EMPTY
以便专门针对空响应显示不同的错误消息。
我正在开发 web2py - 模型 - db_testing.py pythonanywhere.com
下面的代码 运行 成功:
# -*- coding: utf-8 -*-
db = DAL('sqlite://storage.sqlite')
db.define_table('registration',
Field('firstname', requires=IS_NOT_EMPTY(error_message='Should not left blank')),
Field('lastname', requires=IS_NOT_EMPTY()),
Field('gender', requires=IS_IN_SET(['Male', 'Female'])),
Field('birthday', 'date'),
Field('email', requires = IS_EMAIL(error_message='invalid email!')),
Field('salary', 'integer'),
Field('seniority', 'integer')
)
但是第一个字段'firstname'只能防止填表不能留空。它无法验证输入是 a-z 还是 A-Z。
最后一个字段'seniority'可以保证填表必须是0-9,但不能阻止填表不留空
如何设置这两个要求(IS_NOT_EMPTY 和 error_message 并确保输入是字符串/整数)?
有什么想法吗?
判断是否为字符串:if isinstance(firstname, str)
判断是否为空:可以if firstname != ''
或if firstname
;在 Python 中,空对象在用作布尔值时被视为“False”。要检查它是否是字母字符,你可以这样做 if firstname.isalpha()
.
如 documentation 中所述,Field
的 requires
属性可以是验证器列表。所以,你可以这样做:
Field('firstname', requires=[IS_NOT_EMPTY(), IS_ALPHANUMERIC()])
要限制为仅包含字母,请将 IS_MATCH
与正则表达式一起使用:
Field('firstname', requires=[IS_NOT_EMPTY(), IS_MATCH('^[a-zA-Z]+$')])
上面,你不一定需要IS_NOT_EMPTY
验证器,因为IS_MATCH
中的正则表达式至少需要一个字母,但你可能想保留IS_NOT_EMPTY
以便专门针对空响应显示不同的错误消息。