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)相比,在这种情况下有什么好处.不知何故,我不认为你能从使用用户模型(或任何相关的)中获益,你不需要用户名密码、身份验证等东西,所以我想创建你自己的模型是最好的选择。