Как загрузить форму большого двоичного объекта из Javascript в Django бэкэнд - PullRequest
0 голосов
/ 29 мая 2020

У меня есть аудиоблок со следующим кодом, который я хочу отправить в форму с 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, но я ' m выдает ошибку 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, но я включил их в свои заголовки.

1 Ответ

0 голосов
/ 29 мая 2020

Попробуйте использовать декоратор @csrf_token в django. У меня была аналогичная проблема, которая решила это.

попробуйте это

@csrf_exempt
def post_new(request):

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...