ValueError 无法将字符串转换为浮点数:''

我在 heroku 上安装了我的应用程序。我使用timeme js记录用户在页面上花费的活跃时间,并使用隐藏表单将值存储到数据库中。此外,我正在使用 otree 包来编写我的应用程序。以下是我使用的代码:

models.py

class Active(ExtraModel):

    active_duration = models.FloatField()

    active_record = models.LongStringField()

otree 中的views.py/pages.py


class intro_instructions(Page):


    def before_next_page(self):

        data = self.form.data

        p = self.player

        active = Active.objects.create(active_duration=data['active_duration'],

                                       active_record=data['active_record'])

        active.save()

html


<form method="post" role="form" id="form" autocomplete="off">{% csrf_token %}

    <input type="text" name="active_record" id="id_active_record" style="display: none" >

    <input type="number" step='any' name="active_duration" id="id_active_duration" style="display: none">

</form>


错误


ValueError

could not convert string to float: ''


{

  "csrfmiddlewaretoken": "vVhVRLrAUokmiNGRpzCaP78bnTOQyowf5VMfIDgKGglWGuEyQAU2wooWjQzXuBgD",

  "active_duration": "",

  "active_record": ""

}

是因为 active_duration 为空吗?如果我为表单设置 Blank=true, null=true 会有帮助吗?


我假设每次使用都会有输入价值。还有关于为什么输入为空的任何想法吗?难道是用户使用脚本跳过了没有可见字段的页面?从哨兵错误消息来看,一名用户发生了两次这种情况。


斯蒂芬大帝
浏览 108回答 1
1回答

qq_花开花谢_0

这是因为你不能将空字符串转换为浮点数。不过你可以这样做:active_duration=data.get('active_duration') or "0"如果 data["active_duration"] 为空、False 或 None,这将为您提供“0”。>>> data = {"foo": ""}>>> data.get("foo") or "bar"'bar'
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python