如何在Django中使用Twilio发送短信

233 阅读3分钟

如何在Django中使用Twilio发送短信

在本教程中,我们将建立一个简单的Django应用,该应用具有短信功能,一旦满足特定条件,就会向电话号码发送消息。

短信是发送警报、通知,甚至是验证用户的好方法。有一段时间,我们需要在我们的应用程序中使用短信功能。无论是向客户发送通知,还是作为 "多因素认证 "功能的一种方式。

Twillio是一个云通信平台,允许你在你的应用程序中添加语音和短信功能。它是一个付费平台,但在本教程中,我们将使用试用账户。

前提条件

要继续学习本教程,你需要在你的机器上安装Python3

对Django有一点了解将有助于读者更好地学习。

创建和设置一个新的Django项目

让我们从创建一个新的虚拟环境开始。

一个虚拟环境允许你在你的电脑上创建不同的空间,拥有不同的库和版本。

通过创建一个虚拟环境,你将能够为一个项目分开安装必要的库,而不需要全局安装它们。

现在,通过运行下面的命令创建一个虚拟环境env

$ python -m venv env

在这里,我们告诉 Python 在当前目录下一个名为env 的文件夹中创建虚拟环境。

创建后,使用下面的命令激活虚拟环境。

$ source env/bin/activate

激活环境后,使用下面的命令安装Django。

$ pip install django

现在,让我们创建一个新的Django项目twilio_proj ,使用。

$ django-admin startproject twilio_proj

然后导航到twilio_proj 目录并创建一个Django应用程序。

$ cd twilio_proj
$ django-admin startapp score

让我们把我们的应用程序添加到已安装的应用程序列表中。

导航到twilio_proj 目录并编辑settings.py 文件。

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'score',
]

设置Twilio

为了开始使用Twilio,我们需要在Twilio上注册,创建一个账户,同时获得一个Twilio号码。

点击Sign Up 按钮,填写你的详细资料,创建一个账户。

创建一个模型

现在让我们定义一个简单的类。

score 目录中,编辑models.py 文件并添加以下几行代码。

from django.db import models

#defining a simple class
class Score(models.Model):
    #integer field
    test_result = models.PositiveIntegerField()

    #string representation
    def __str__(self):
        return str(self.test_result)

现在让我们在admin.py 文件中注册Score的模型,这样我们就可以在Django管理部分修改它。

from django.contrib import admin
from .models import Score

admin.site.register(Score)

下一步是将我们的模型迁移到数据库中。

迁移是Django将你对模型所做的修改(增加一个字段,删除一个模型等)传播到数据库模式的方式。

现在,让我们通过运行下面的命令将我们的模型迁移到数据库中。

$ python manage.py makemigrations # migrating the app and database changes
$ python manage.py migrate        # final migrations

一个超级用户拥有在Django admin中创建、编辑、更新和删除数据的权限。

通过运行下面的命令创建一个超级用户。

$ python manage.py createsuperuser 

现在,我们可以登录到管理页面了。

要登录到管理区,请再次为应用程序服务,并进入http://localhost:8000/admin,用你的超级用户的详细信息登录。

Django admin login page

Django管理员登录页面

Django admin page

Django管理页面

现在,让我们在Score 类别中添加一个分数,测试它是否没有错误。

点击分数,然后点击Add Score ,添加一个分数。

Add Score

添加分数

配置

为了使用Twilio,我们需要一个trial number,account sid, 和auth token

我们可以在账户控制台的仪表板页面上找到我们的账户特定配置凭证,如下图所示。

Twilio dashboard page

Twilio仪表盘页面

点击 "获取试用号码 "按钮来获取一个试用号码。

试用号码是Twilio在注册时分配给你的一个免费电话号码,用于测试目的。

Trial number

试用号码

接下来,我们需要使用以下命令安装Twilio库。

$ pip install twilio

现在我们需要在我们的models.py 文件中导入Twilio模块。

from twilio.rest import Client

接下来,在models.py中修改你的Score 类,看起来像下面的代码。

#defining a simple class
class Score(models.Model):
    #integer field
    test_result = models.PositiveIntegerField()

    #string representation
    def __str__(self):
        return str(self.test_result)

    #save method
    def save(self, *args, **kwargs):
        #if test_result is less than 80 execute this
        if self.test_result < 80:
            #twilio code
            account_sid = 'YOUR_ACCOUNT_SID'
            auth_token = 'YOUR_AUTH_TOKEN'
            client = Client(account_sid, auth_token)

            message = client.messages.create(
                                        body=f'Hi, your test result is {self.test_result}. Great job',
                                        from_='YOUR_TRIAL_NUMBER',
                                        to='VERIFIED_NUMBER' 
                                    )

            print(message.sid)
        return super().save(*args, **kwargs)

通过试用号码,我们只能向Twilio验证的号码发送短信。如果我们想向未经验证的号码发送,你需要购买一个电话号码。

为了测试的目的,我们的验证号码将是我们在创建Twilio账户时提交的电话号码验证号码。

现在前往django-admin页面,添加一个小于80分的分数,你应该会收到一条Twilio短信

结语

最后,我们已经了解了Twilio。我们还学习了如何从Django应用中发送短信。

使用Twilio你还有很多东西可以实现。如果你想在生产中使用Twilio,请从试用版升级。

总结一下,我们学会了如何建立一个Django应用并将其与Twilio集成。我们还学习了如何使用Twilio从Django应用中发送短信。