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 None
是 False
只有 None is None
是True
也许你只想要 if not slider_value1 :
对任何错误值(空字符串、空列表、空元组、false、0、None 等)都为真
您可能想尝试简单的 if slider_value1 != ''
。这是一个比 if not slider_value1
更好的选择,因为后者会屏蔽掉 0
,而您可能不想这样做。
在我创建的多页调查应用程序中,我有一个 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 None
是 False
只有 None is None
是True
也许你只想要 if not slider_value1 :
对任何错误值(空字符串、空列表、空元组、false、0、None 等)都为真
您可能想尝试简单的 if slider_value1 != ''
。这是一个比 if not slider_value1
更好的选择,因为后者会屏蔽掉 0
,而您可能不想这样做。