Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用单词长度比较单词时无错误_Python_Otree - Fatal编程技术网

Python 使用单词长度比较单词时无错误

Python 使用单词长度比较单词时无错误,python,otree,Python,Otree,我试图使用Otree对主题在表单字段中可以使用的最小字符数进行限制。我希望,如果受试者输入的名称长度小于4个字符,应用程序会向他们显示一个错误,说明他们必须写更长的单词 我使用的是len,但出现以下错误: 'NoneType' has no len() 有人能帮我找出代码中的错误并帮我修复它吗 这是我的pages.py代码 class Consentimiento(Page): form_model = 'player' form_fields = ['consentimi

我试图使用
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'
 

我注意到您的工作示例中有几个错误

  • len(self.player.approvisimento)
    正在检查数据,而不是用户提供的输入。您应该将其替换为
    len(value)
    。(还要注意额外的偏执)

  • 您正在使用
    fieldname\u error\u 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'


class Consentimiento(Page):
    form_model = 'player'
    form_fields = ['consentimienton']

这是什么?self.player.approvisimento另外,approvisimento和approvisimenton很容易混合self.player.approvisimento是一个空的stringField,人们在其中输入他们的名字。您确定它是stringField类型吗?尝试打印出类型为
self.player.approvisimento
,然后检查它是否是兼容类型的
len()
是的,我在models.py中定义了它
class Consentimiento(Page):
    form_model = 'player'
    form_fields = ['consentimienton']