Python 如何在视图中使用django对象
我的意图是,每次sms发送到我的服务器时,服务器都应该查看数据库,以查看sms中的号码是否已经是存储的对象。如果不是,则创建该对象并将其保存到数据库。我做错了什么 views.pyPython 如何在视图中使用django对象,python,django,Python,Django,我的意图是,每次sms发送到我的服务器时,服务器都应该查看数据库,以查看sms中的号码是否已经是存储的对象。如果不是,则创建该对象并将其保存到数据库。我做错了什么 views.py from django.http import request from django_twilio.decorators import twilio_view from django_twilio.request import decompose from twilio.twiml.messaging_respon
from django.http import request
from django_twilio.decorators import twilio_view
from django_twilio.request import decompose
from twilio.twiml.messaging_response import MessagingResponse
from .models import Contacts
@twilio_view
def sms_choice(request):
twilio_request = decompose(request)
contact_num = twilio_request.from_
contact_info = ['Thanks for your subscription',
"How old are you?", "Annual Income?"]
response = twilio_request.body
resp = MessagingResponse()
subscribers = [Contacts.objects.all()]
for contact in subscribers:
if contact_num != contact.customer_number:
b = Contacts(customer_number=contact_num)
b.save()
resp.message(contact_info[0])
elif contact_num == contact.customer_number:
resp.message(contact_info[1])
print(contact_num, response)
return str(resp)
models.py
from django.db import models
class Contacts (models.Model):
customer_number = models.CharField(max_length=15)
customer_age = models.CharField(max_length=4,
null=True)
customer_income = models.CharField(max_length=10,
null=True)
def __unicode__(self):
return self.customer_number
您似乎有两种情况:在第一种情况下,您的数据库中不存在联系人号码,因此您希望回复消息1;在第二种情况下,联系人号码确实存在,因此您希望回复消息2 因此,您应该检查是否有一个带有该编号的记录,如果没有,则创建它。这里有一个快捷方式:
get\u或\u create
resp = MessagingResponse()
contact, created = Contacts.objects.get_or_create(customer_number=contact_num)
if created:
resp.message(contact_info[0])
else:
resp.message(contact_info[1])
# I presume you want to update the customer age here
contact.age = response
contact.save()
return resp
您似乎没有描述正在发生的事情,也没有描述它与您预期的不同之处。当我测试代码时,它只是创建一个新的类实例,而不是在d.b中找到它。但这是您告诉它要做的。你到底想发生什么?我想做的是,如果号码已经存储并收到了第一个联系人信息问题,服务器应该回答第二个问题(还要注意,这不能是您的实际代码,因为这里的
订阅者
是一个包含查询集的列表;对其进行迭代将不起作用。请始终发布实际代码。)