2016-01-04 37 views
0

我想存儲發送到Twilio號碼的消息,並且因爲它們是作爲HTTP請求發送的,所以我想我可以使用request.POST獲取參數值,但是如何保存這些值並將它們存儲在數據庫中以後檢索?這裏是我提出的代碼,但它不起作用。如何使用Django在數據庫中存儲request.POST值?

views.py

@csrf_exempt 
def incoming(request): 
    from_ = request.POST.get('From') 
    body_ = request.POST.get('Body') 
    to_ = request.POST.get('To') 
    m = Message.objects.create(sentfrom=from_, content=body_, to=to_) 
    m.save() 
    twiml = '<Response><Message>Hi</Message></Response>' 
    return HttpResponse(twiml, content_type='text/xml') 

當我刪除所有request.POST和數據庫查詢

@csrf_exempt 
def incoming(request): 
    twiml = '<Response><Message>Hi</Message></Response>' 
    return HttpResponse(twiml, content_type='text/xml') 

下面的代碼工作是從models.py消息模型

class Message(models.Model): 
    to = models.ForeignKey(phoneNumber, null=True) 
    sentfrom = models.CharField(max_length=15, null=True) 
    content = models.TextField(null=True) 

    def __str__(self): 
     return '%s' % (self.content) 

回答

2

保存的正確方法是製作一個模型表單並調用is_valid並在其上保存方法。不建議使用request.POST,因爲它不驗證數據。類似下面:

from django import forms 
class MessageForm(forms.ModelForm): 
    class Meta: 
     model = Message 
     fields = '__all__' 

,並在您查看呼叫的MessageForm保存方法來保存。另外請注意,'to'字段是外鍵,可能值得看看How do I add a Foreign Key Field to a ModelForm in Django?

+0

這聽起來不錯,特別是如果POST有效載荷是可預測的(你知道你回來了什麼字段)。我會創建一個模型來存儲這些信息和一個ModelForm來驗證/清理。如果你在別處存儲這些信息,你可以跳過模型並簡單地定義一個表單。 – Flowpoke

相關問題