簡體   English   中英

檢查以前的SMS發件人Django / Twilio

[英]Checking previous SMS senders Django/Twilio

我試圖跟蹤向“ Twilio”應用程序發送“密碼”的用戶的答案,以便他們回答一系列問題。 首先,最好檢查數據庫中是否存在“ from_number”,如果不存在則創建一個新的Caller。

在models.py中:

class Callers(models.Model):
    body = models.CharField()
    from_number = models.CharField()
    last_question = models.CharField(max_length=1, default="0")

在views.py中:

def HelloThere(request):
    body = request.REQUEST.get('Body', None)
    from_number = request.REQUEST.get("From",None)

    if Caller.objects.filter(from_number == from_number):
        if last_question == "0":
            caller = Caller(message = "first question". last_question = "1")
            caller.save()
            return HttpResponse(str(resp))
        if last_question == '1':
            # so on and so forth
    else:
        caller = Caller(body=body, from_number=from_number, last_question='0')
        caller.save()
        message = "What is the password?"

我認為我不能使用request.user.is_authenticated()。

/擁有這么多相同的字段名是一個壞主意嗎? “身體=身體=身體?

首先關於模型:

class Callers(models.Model):
    body = models.CharField()
    from_number = models.CharField()
    last_question = models.IntegerField(default=0) # if you have more than 10 question then I guess using IntegerField is better here

然后查看:

def hello_there(request):  # this is a function, so use lower case with underscore for name
    body = request.REQUEST.get('Body', None)
    from_number = request.REQUEST.get("From",None)

    try:
        caller = Caller.objects.get(from_number=from_number) # using get() is better than filter here since I guess you want unique caller field in DB, right?
    except Caller.DoesNotExist:
        caller = None

    if caller:
        if caller.last_question == 0:
            # update the caller ?
            caller.last_question = 1
            caller.body = 'Something'
            caller.save()
            # ... your code ...
            return HttpResponse(str(resp))
        if last_question == 1:
            # so on and so forth
            # if you have repeated process here, make a function to update caller to be DRY
    else:
        new_caller = Caller(body=body, from_number=from_number, last_question=0)
        new_caller.save()
        message = "What is the password?"

request.user.is_authenticated()僅用於User模型,因此您不能使用它。 可以將相同的名稱用於不同的事物,例如視圖中的body可以是變量或參數。 如果您不清楚,則可以選擇其他名稱。

希望能幫助到你!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM