python - 使用自身长度比较单词时没有错误
问题描述
我试图限制主题可以在表单字段中使用的最小字符数,使用Otree
. 我希望如果受试者输入的名称长度少于 4 个字符,应用程序会向他们显示一个错误,说明他们必须写一个更长的单词。
我正在使用len
,但出现以下错误:
'NoneType' has no len()
有人可以帮我找出代码中的问题并帮助我修复它吗?
这是我的 pages.py 代码。
class Consentimiento(Page):
form_model = 'player'
form_fields = ['consentimiento', 'consentimienton',]
def consentimiento_error_message(self, value):
print('El nombre es', value)
if len(self.player.consentimiento)) < Constants.number:
return 'Por favor en el campo de nombre debe poner mínimo 4 letras'
这是我的 models.py
代码
consentimienton = models.StringField( max_length=50 )
解决方案
我注意到您的工作示例中有几个错误。
len(self.player.consentimiento)
正在检查数据,而不是用户提供的输入。您应该将其替换为len(value)
. (还要注意额外的括号)您正在使用
fieldname_error_message(self,value)
功能。这应该被定义:- 对于字段,而不是页面。
- 在
models.py
您的模型下,而不是在pages.py
.
所以最后你应该有以下内容models.py
:
# Don't forget to define number field in Constants
class Player(BasePlayer):
consentimienton = models.StringField( max_length=50 )
def consentimienton_error_message(self, value):
print('El nombre es', value)
if len(value) < Constants.number:
return 'Por favor en el campo de nombre debe poner mínimo 4 letras'
这在你的pages.py
:
class Consentimiento(Page):
form_model = 'player'
form_fields = ['consentimienton']
推荐阅读
- python - 垃圾邮件分类器的“空词汇”错误
- java - 长时间运行的操作的状态应该存储在哪里?
- android - 如果在清单文件中定义服务而不在代码中启动服务,android如何工作
- google-sheets - 谷歌表格查询结合数据源
- spring - 获取安全排除端点的“invalid_token”和“unauthorized”
- ios - 在 TextField iOS 中按 Backspace/Delete
- angular - 如何在 Jhipster 中添加 JS 文件并集成新模板
- php - 函数 mcrypt_get_iv_size()、mcrypt_create_iv()、mcrypt_encrypt() 在 Codeigniter 5.6 上已弃用以升级 7.1
- haskell - 为类型家族的唱片写优雅的镜头?
- vba - 当子表单绑定到表时,是否可以在子表单的表单上引发事件?