Отправьте SMS на номера, хранящиеся в базе данных postgres - PullRequest
1 голос
/ 22 апреля 2020

В настоящее время у меня есть приложение django, которое хранит номера телефонов в базе данных postgres. Я ищу отправку смс (через twilio, или как там будет работать) на каждый из номеров в базе данных, так как они добавляются через веб-приложение django. Я использую pgadmin для мониторинга базы данных, и на данный момент все это размещено на моем локальном хосте. Нужно ли развертывать webapp и базу данных, чтобы twilio работал с postgres?

Кажется, я не могу найти чёткого объяснения тому, как я могу отправлять сообщения на номера, хранящиеся в виде записей в моей базе данных postgres, любая помощь будет потрясающей!

models.py

from django.db import models
import re
from django.core.exceptions import ValidationError
from django.core.validators import RegexValidator

# def phone_regex(val):
#     reg = re.compile('^\+?1?\d{9,15}$')
#     if not reg.match(val):
#         raise ValidationError('Phone number must be entered in the format: +999999999. Up to 15 digits allowed.')

# Create your models here.
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) # validators should be a list
    # content = models.TextField()

views.py

from django.shortcuts import render, redirect
from django.http import HttpResponse, HttpRequest
from django.core.exceptions import ValidationError
# import pymsgbox
from .models import Todo
from .forms import Post
# Create your views here.


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)


def insert_todo_item(request: HttpRequest):
    todo = Todo(content=request.POST['content'])
    try:
        todo.full_clean()

    except ValidationError:
        # pymsgbox.alert('ValidationError! Phone number must be entered in the format: +999999999. Up to 15 digits allowed.', 'Title')
        return redirect('/main/list/')

    todo.save()
    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/')

settings.py

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'MyDB',
        'USER':'postgres',
        'PASSWORD':'postgres',
        # 'HOST':'XXXXXX.postgres.pythonanywhere-services.com',
        # 'PORT': '11111'
        'HOST': 'localhost'
    }
}
...