如何通过django中的POST检索.wav文件并将其存储在数据模型中?

时间:2017-05-04 20:46:11

标签: django vxml

我正在学习VXML和Django。我试图找出如何从一些voice-xml(vxml)浏览器中干净地检索录音并将其传递到服务器端,我使用django来进一步处理传递的信息。然后我想将文件存储在.wav文件中的某个位置,以便稍后重播。我有以下代码片段:

在VXML文件中:

   <record name="recording" />
       [here i record the recording]
      <filled>
        <submit next="/url/" method="post" namelist="recording"/>
      </filled>

在django的urls.py中,我会

  url(r'^url$', view.index, name='index')

views.index定义

  def index(request):
     _recording = [..retrieve .wav from request here]
     _modelObject = ModelObject(recording= _recording)
     _modelObject.save()     #store recording in some database
     return render(request, 'genericfile.xml', content_type='text/xml')

在model.py中,我猜我会有一个类:

  from django.db import model

  class ModelObject(model.Models)
       recording = [declare type of .wav file here]

我如何以干净的方式完成[..]中的步骤?

1 个答案:

答案 0 :(得分:0)

之前我没有使用过vxml,但看起来你想要同时存储.xml格式和.wav格式。 所以这是我在这种情况下的解决方案:

from django.db import model

class ModelObject(model.Models)
    # Define a text filed or anything that can store long string
    # of _recording var above.
    recording = models.TextField() 
    def save(self, *args, **kwargs):
        if self.recording:
            # Convert vxml to wav and store to a file
            pass
        super(ModelObject, self).save(*args, **kwargs)

    @property
    def recording_wav(self):
        if not self.recording:
            return None
        return 'path/to/file.wav' 

一旦删除ModelObject实例,请记住使用post_delete信号删除file.wav。