我想创建一系列问题供任何人回答。我可以为所有发短信的人创建一个用户,并为“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))
但是在这里,如果他们将绿色文字作为第一个回复,他们会自动击败测验。我无法想到实现这一目标的任何方法,因为它需要查看过去完成的操作。
谢谢!
答案 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
字段,并将测验列表作为静态列表。
玩得开心!