我寫了一個類,它檢查輸入中的4個參數,並在輸出中顯示一個結果列表。 只有一個這個參數是必需的,因此我有7個if - else嵌套塊。 我想指定所述的條件正常工作。如何避免python中的if-else塊太多
,我很困惑,如果有寫這一個更聰明的辦法:
if cd['subject'] is None:
if cd['school'] == '':
if cd['price']:
files = File.objects.filter(name__contains=cd['name'], price = '0.0')
else:
files = File.objects.filter(name__contains=cd['name'])
else:
if cd['price']:
files = File.objects.filter(name__contains=cd['name'], school = cd['school'], price = '0.0')
else:
files = File.objects.filter(name__contains=cd['name'], school = cd['school'])
else:
if cd['school'] == '':
if cd['price']:
files = File.objects.filter(name__contains=cd['name'], subject = cd['subject'], price = '0.0')
else:
files = File.objects.filter(name__contains=cd['name'], subject = cd['subject'])
else:
if cd['price']:
files = File.objects.filter(name__contains=cd['name'], school = cd['school'], subject = cd['subject'], price = '0.0')
else:
files = File.objects.filter(name__contains=cd['name'], school = cd['school'], subject = cd['subject'])
return render(request, 'search.html', {'files': files, 'request': request})
請修復您的代碼縮進;爲什麼混合'None',空字符串''''和布爾coersion('如果')在比較? –
alko
因爲變量來自Django表單並且是不同的表單字段。 我忘了說,條件工作得很好,我想知道是否有一個更聰明(或更優雅,如果你可能)的方式說同樣的事情。 – Higure
非常奇怪'cd ['price']'處理 – alko