您好我有一個Ajax調用它迷上了一個小觀點:Django的空GET變量
def get_spans(snow_load, wind_speed, module_length):
spans = Spans.objects.values_list('span').filter(
snow=snow_load,
wind=wind_speed,
module_length__gte=module_length,
).order_by('span')
try:
max_span = max(spans)
except ValueError:
max_span = 0
return max_span
def GetSpans(request):
# get variables from ajax request
snow_load = request.GET.get('snow_load', None)
wind_speed = request.GET.get('wind_speed', None)
module_length = request.GET.get('module_length', None)
# call get_spans()
max_span = get_spans(snow_load, wind_speed, module_length)
# json encode it
max_span = simplejson.dumps(max_span, cls=DjangoJSONEncoder)
return HttpResponse(
max_span,
mimetype='application/json'
)
的問題是,任何這些GET變量可能是''
或小數。我的問題是處理這些問題的最佳方法是什麼?如果變量是''
,我會得到invalid literal for int() with base 10:
錯誤。例如,我應該用None
替換所有空字符串嗎?我是否應該將所有值都輸入到float
?
任何幫助非常讚賞
我認爲這是我所需要的。如果任何變量的值是''或None,我只想從過濾器中折扣它並返回一個更大的查詢集。這是達到這個目標的最pythonic方式嗎? –
它的___方式清晰易懂(這是pythonic的一部分)。 「if」檢查將在「falsey」值(例如'''')和明顯的'None'上失敗。 –
這是否會對db進行一次或三次調用? –