Python:"is not None" 未按预期工作

Python: "is not None" not working as expected

在我创建的多页调查应用程序中,我有一个 jQuery UI 滑块,用于为图像提供评级。这 returns 我的 Python/Django 视图的一个数值,存储在列表 slider_DV_values

在稍后的数据验证调查页面上,参与者有机会通过另一个 jQuery 滑动条更新他们分配给图像的评级。

我的问题是 jQuery UI 滑块仅在参与者更改时返回数值。因此,如果参与者不更新原始评级,则原始评级将被覆盖,什么也没有。

但是,如果他们确实更新了评分,则会存储新值。

如果我尝试

    elif step == 13:
        slider_value1 = self.request.POST.get('slider_value1')

        print "This is slider_value1", slider_value1

        if slider_value1 is not None:
            slider_DV_values.pop(0)                
            slider_DV_values.insert(0, slider_value1)

存储在slider_DV_values中的原始值仍在被覆盖,什么也没有。

我以为 is not None 会阻止使用空值覆盖原始值?这不对吗?

谁能告诉我如何防止原始值被覆盖,除非新值是更新后的数值?

谢谢,Deepend

编辑

要查看我如何获取值,这是我 SurveyWizardView 页面中的 jQuery 滑块,其值是通过隐藏的表单元素返回的

<div class="DV_image_row">          
        <div class="DV_image_left">             
            <img src="{% static "survey/images/pathone/" %}{{first_image}}{{fourth_image}}{{seventh_image}}" height="300" width="250" style="border:1px solid black;" align="middle"/>                          
                      <div class="DV_slider_one" id="one"></div>                        

                        <script >                                                                               
                            $('#submit').click(function() {
                                var username = $('#hidden').val();
                                if (username == "") username = 0;  
                                $.post('comment.php', {
                                    hidden: username
                                }, function(return_data) {
                                    alert(return_data);
                                });
                            });

                            $(".DV_slider_one").slider({            
                                animate: true,
                                range: "min",
                                value: {{first_slider}}{{forth_slider}}{{seventh_slider}},
                                min: -100,
                                max: +100,
                                step: 1,

                                slide: function(event, ui) { 
                                  $("#slider-result_left").html((ui.value > 0 ? '+' : '') + ui.value);

                                  if($(this).attr("id") ==  "one")
                                      $("#hidden2").val((ui.value > 0 ? '+' : '') + ui.value);
                                }
                            });

                        </script>   


                    <div id="slider-result_left">{{first_slider}}{{forth_slider}}{{seventh_slider}}</div>
                    <input type="hidden" name="slider_value1" id="hidden2"/>        


      </div> 

"" is NoneFalse

只有 None is NoneTrue

也许你只想要 if not slider_value1 : 对任何错误值(空字符串、空列表、空元组、false、0、None 等)都为真

您可能想尝试简单的 if slider_value1 != '' 。这是一个比 if not slider_value1 更好的选择,因为后者会屏蔽掉 0,而您可能不想这样做。