没有Django / Twilio数据库的问题系列

时间:2013-08-01 22:35:40

标签: python django twilio

我想创建一系列问题供任何人回答。我可以为所有发短信的人创建一个用户,并为“completed_questions”提供一个字段,但我想知道这是否可以在没有数据库的情况下完成。例如:

def HelloQuiz(request):
    body = request.REQUEST.get('Body', None)
    if body == 'Quiz me up':
        message = "2 + 3?"
    if body == '6':
        message = "Congrats! Next question: what color is green?"
    if body == 'Green':
        message == "You beat the quiz!"
    resp = twilio.twiml.Response()
    resp.sms(message)
    return HttpResponse(str(resp))

但是在这里,如果他们将绿色文字作为第一个回复,他们会自动击败测验。我无法想到实现这一目标的任何方法,因为它需要查看过去完成的操作。

谢谢!

1 个答案:

答案 0 :(得分:0)

使用sqlite3是要走的路。这比写入文本文件更好。

我的想法是您可以使用标准User模型来创建用户,也可以使用电话号码作为用户名,例如:

from_number = request.REQUEST.get('From', None)
user = User.objects.get_or_create(username=from_number, ...)
# ... your code ...

然后你只需要为测验定义一个模型,可能还需要一个关系模型:

class Quiz(models.Model):
    message = models.CharField(max_length=100)
    order = models.IntegerField()
    response = models.CharField(max_length=100)
    # ... fields you need ...

    def __unicode__():
        return self.message

class QuizUser(models.Model):
    quiz = models.ForeignKey('Quiz')
    user = models.ForeignKey('User')

因此,只要有消息进入,您就可以使用一些简单的查询集来查找正确的用户并进行测验:

from_number = request.REQUEST.get('From', None)
body = request.REQUEST.get('Body', None)
user = User.objects.get(username=from_number)
quiz = Quiz.objects.get(message=body)
user_quiz = QuizUser.objects.get(user=user, quiz=quiz)
# ... your code ...

这只是我的基本意见。

您当然可以选择原始计划,使用自定义用户模型并添加completed_quiz字段,并将测验列表作为静态列表。

玩得开心!