0

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

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))

但是在这里,如果他们以绿色作为他们的第一反应,他们会自动通过测验。我真的想不出任何方法来实现这一点,因为它需要查看过去完成的操作。

谢谢!

4

1 回答 1

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字段并将测验列表作为静态列表。

玩得开心编码!

于 2013-08-02T06:49:32.940 回答