Django中Twilio的表单验证发送短信
问题描述:
我试图在DetailView Django页面中设置Twilio集成。他们查看详细的查看页面,并可以通过POST方法请求预订。预订后,我想发送短信给预订的老板,在我的情况下是老师。Django中Twilio的表单验证发送短信
forms.py
from django.core.validators import RegexValidator
class BookingForm(forms.Form):
phone_regex = RegexValidator(regex=r'^\+?1?\d{9,15}$', message="Phone number must be entered in the format: '+999999999'. Up to 15 digits allowed.")
Phone = forms.CharField(max_length=15,validators=[phone_regex],label='Phone')
views.py
def post(self,request,**kwargs):
form = BookingForm(self.request.POST)
account_sid = "xxx"
auth_token = "xxx"
teacher = Teacher.objects.get(id=self.kwargs['pk'])
client = Client(account_sid, auth_token)
user_phone = form['Phone'].value
#user_phone = self.request.POST['Phone']
client.messages.create(
to=teacher.phone_number,
from_="+442033225719",
body="You have a new student" +
" Student phone number:{}".format(user_phone))
而且我有一个模板的形式,其中有1个输入 - 电话号码。
然而,当我提交表单,我收到以下短信:
学生电话号码:<bound method BoundField.value of <django.forms.boundfield.Boundfield object at 0x104e5f0b8>>
需要注意的是,如果我不使用形式,而是有一个简单的USER_PHONE =自.request.POST ['Phone']而不是使用form.is_valid()验证表单,一切工作正常。
答
你需要验证表单,然后得到cleaned_data
form = BookingForm(self.request.POST)
form.is_valid()
user_phone = form.cleaned_data['Phone']
值