【问题标题】:How to upload a blob form in Javascript to Django backend如何将 Javascript 中的 blob 表单上传到 Django 后端
【发布时间】:2020-05-29 18:07:32
【问题描述】:

我有一个带有以下代码的音频 blob,我希望使用 javascript 将其发送到表单

function sendData(blob) {
  let fd = new FormData;
  fd.append('fname', 'test.wav');
  fd.append("recording", blob);
  let token = '{{csrf_token}}';

  $.ajax({
    url: 'landing/submit/',
    type: 'POST',
    headers: { 'X-CSRFToken': token },
    data: fd,
    cache: false,
    processData: false, // essential
    contentType: false, // essential, application/pdf doesn't work.
    enctype: 'multipart/form-data',
  });
}

我正在尝试将其发送到 django 表单,但出现 403 错误。这是它被发送到的视图:

views.py

def post_new(request):
    if request.method == 'POST':
        form = PostAudio(request.POST, request.FILES)
        if form.is_valid():

            form.save()
            return redirect('landing-home')
    else:
        form = PostAudio()
    return render(request, 'landing/submit.html', {'form': form})

我错过了什么?大多数其他人在网上发帖说这与不使用 CSRF 令牌有关,但我将它们包含在我的标题中。

【问题讨论】:

    标签: javascript python django


    【解决方案1】:

    尝试在 django 中使用 @csrf_token 装饰器。我有一个类似的问题解决了它。

    试试这个

    @csrf_exempt
    def post_new(request):
    
    

    【讨论】:

    • 知道了。我应该把令牌装饰器放在哪里?
    猜你喜欢
    • 1970-01-01
    • 2021-12-23
    • 1970-01-01
    • 2019-08-31
    • 1970-01-01
    • 2012-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多