#python #django #django-views
#python #django #django-просмотры
Вопрос:
Я хочу отобразить недопустимое сообщение, когда поле моей html-формы пусто. Но приведенный ниже код запускает «if block», когда поле пустое, и «else block», когда поле не пустое.
Я написал это таким образом, потому что это, похоже, выполняет свою работу. Но я в замешательстве. Разве не должно быть наоборот?
if(request.POST['amount'] is not None):
os.remove(os.path.join(settings.MEDIA_ROOT,str(uploaded_file.name) ))
messages.success(request,('Invalid Field....'))
return redirect('assignFine')
else:
form = Fine(amount=request.POST['amount'],numberPlate=num,policeUsername=request.user)
form.save()
Комментарии:
1. Вы проверяли, переходит ли он в
else
блок, если входные данные действительны?
Ответ №1:
Это условие:
if request.POST['amount'] is not None:
Означает: если параметр существует (не None
является), выполните приведенный ниже блок, в противном случае выполните else
часть. Чтобы это имело смысл, если amount
существует, мы должны создать Fine
, в противном случае мы сообщаем об ошибке. Похоже, что ваши условия изменены!
В зависимости от ожидаемых значений amount
параметра, я бы также рассмотрел возможность использования этой версии:
if request.POST['amount']:
# create fine
else:
# signal an error
Это короче и означает: если amount
это не None
, или ''
, или False
, или 0
или любые другие ложные значения в Python, выполните приведенный ниже блок, в противном случае выполните else
часть.
Комментарии:
1. более подробный, но также и более точный для многих применений, где могут быть допустимы ложные значения
2. Но если это так, как вы говорите. Тогда не следует запрашивать if. POST[‘amount’] не является none: блок будет выполняться, когда сумма существует?
3. @sayeedk06 о! Теперь я понимаю вашу точку зрения. Я полагаю, что ваши условия изменены! Также проверьте, какое значение поступает в параметр, возможно, это не так
None
, но это пустая строка. Вот почему я предпочитаю вторую версию в своем ответе.
Ответ №2:
Вы можете использовать приведенную ниже фразу, чтобы проверить, существует ли amount
параметр в request.POST
:
if 'amount' in request.POST:
# Your code
else:
# Else case
Вы можете использовать not in
оператор для получения отрицательной фразы if / else:
if 'amount' not in request.POST:
# No 'amount' available
else:
# There is 'amount' parameter
[Править]
И чтобы проверить, не является ли значение not empty
, False
или None
, вы можете проверить это следующим образом:
if 'amount' in request.POST and request.POST['amount']:
# 'amount' exists, and is not 'empty', 'False', or 'None'
Комментарии:
1. А что, если
amount
есть в словаре, но соNone
значением?