Как я могу исправить это дерьмо?
Что я делаю не так?
Проблема: оператор if всегда игнорируется. Оператор else всегда возвращается.
Желаемый результат: Если test == 'True' (я хочу сопоставить с параметром 'Digits'), то переходим к twilio_view3, иначе перенаправляем к twilio_view1.
example.py
import re
def test():
if re.match(r'99\d{10}')
return True
else:
return False
views.py
from example import test
def twilio_view2(request: HttpRequest) -> HttpResponse:
digits = request.POST.get('Digits')
response = VoiceResponse()
if test == 'True':
gather = Gather(input='dtmf', action='/twilio_view3', method='POST')
gather.say('Blah blah blah.')
response.append(gather)
return HttpResponse(str(response), content_type='text/xml')
else:
response.say('Something other than Blah blah blah.')
response.redirect("/twilio_view1")
return HttpResponse(str(response), content_type='text/xml')
ТвиML-ответ:
<Response>
<Say>Something other than Blah blah blah.</Say>
<Redirect>/twilio_view1</Redirect>
</Response>
В вашем коде есть несколько ошибок:
test
- это функция. Поэтому, когда вы делаетеif test == 'True'
, вы сравниваете функцию со строкой, которая всегда будетFalse
. Вместо этого нужно выполнитьif test() == True
, чтобы сравнить результат выполнения функции со значением.Лучше всего сделать
if test()
, потому что сравнение== True
всегда избыточно.Даже после исправления этого, вы используете
re.match()
неправильно и получите ошибку. Скорее всего, вам нужно передать строку вtest()
для сравнения с ней, но я не могу быть уверен без более подробной информации о том, что вы пытаетесь сделать.
В конце концов, лучший способ "исправить это дерьмо" - это изучить Python, проработав учебник. Вам нужно сосредоточиться на том, как работают функции и как передавать аргументы в функцию. Вам также следует изучить разницу между строками, булевыми числами и другими типами данных.