Использование twilio внутри представления - PullRequest
0 голосов
/ 22 апреля 2020

У меня есть django веб-приложение, которое принимает записи номера телефона. Мне нужно отправить смс-сообщение на последнюю запись номера телефона в базе данных, каждый раз, когда добавляется новая запись, я хочу, чтобы этот номер получал текстовое сообщение. Как я могу включить что-то вроде twilio в представление insert_todo_item, чтобы каждый раз, когда добавлялся новый номер телефона, он получал сообщение?

Вот что я попробовал:

views.py

from django.shortcuts import render, redirect
from django.http import HttpResponse, HttpRequest
from django.core.exceptions import ValidationError
from .models import Todo
from .forms import Post

from twilio.rest import Client
# Create your views here.

# codes required by twilio. These are specific to the twilio account being used.
account_sid = '...'
auth_token = '...'

sender = '+123456789'

def list_todo_items(request):
    context = {
        'todo_list' : Todo.objects.all(),
        'count': Todo.objects.count()
    }
    # count = Todo.objects.count()
    # context2 = {'count': count}
    # context = {'count': Todo.objects.count()}
    # count = Todo.objects.count()
    return render(request, 'index.html', context)

# use twilio to send message to the inputted number!
# probably don't need to access the database at all :)
# want to send to todo.objects.
def insert_todo_item(request: HttpRequest):
    todo = Todo(content=request.POST['content'])
    try:
        todo.full_clean()

    except ValidationError:
        return redirect('/main/list/')

    todo.save()
    reciever = todo

    client.messages.create(to=receiver, from_=sender, body=text)
    return redirect('/main/list/')

def delete_todo_item(request,todo_id):
    todo_to_delete = Todo.objects.get(id=todo_id)
    todo_to_delete.delete()
    return redirect('/main/list/')

models.py

class Todo(models.Model):
    phone_regex = RegexValidator(
        regex= r'^\+?1?\d{9,15}$',
        message= ("Phone number must be entered in the format: '+999999999'. Up to 15 digits allowed."),
        code='invalid_regex',
    )
    content = models.CharField(max_length=17, validators=[phone_regex], blank=False)
...