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

Python 没有数据库的Django/Twilio系列问题,python,django,twilio,Python,Django,Twilio,我想创建一系列问题供任何人回答。我可以为每个发短信的人创建一个用户,并为“已完成的问题”创建一个字段,但我想知道这是否可以在没有数据库的情况下完成。例如: def HelloQuiz(request): body = request.REQUEST.get('Body', None) if body == 'Quiz me up': message = "2 + 3?" if body == '6': message = "Congrats

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

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))
但在这里,如果他们的第一反应是发绿色短信,他们会自动击败测验。我真的想不出任何方法来实现这一点,因为它需要查看过去完成的动作


谢谢

使用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 ...
这只是我的基本观点

当然,您可以按照原始计划,使用自定义用户模型,添加
已完成的测验
字段,并将测验列表作为静态列表


享受编码的乐趣

如果没有数据库,看起来有点不可能,你不能真正检查用户是否已经解决了哪个测验。虽然你可以创建一个呼叫者列表并使用文本文件来存储它,但对我来说这似乎是一项工作。是的,这是一个延伸,但你是对的。没有任何对过去的提及。。。你不知道调用方在过去做了什么。在你看来,写入文本文件还是使用sqlite3更好吗?我正要发表评论,但最后它作为一个回答只是想知道,你认为使用Django用户模块与创建自定义类调用方(models.Model)相比,在这种情况下有什么好处.不知何故,我不认为你能从使用用户模型(或任何相关的)中获益,你不需要用户名密码、身份验证等东西,所以我想创建你自己的模型是最好的选择。