Написание API загрузки файлов с использованием Django - PullRequest
10 голосов
/ 10 июня 2011

У меня есть приложение Django, которое вращается вокруг пользователей, загружающих файлы, и я пытаюсь создать API. По сути, идея заключается в том, что запрос POST может быть отправлен (например, с помощью curl) с файлом в мое приложение, которое будет принимать данные и обрабатывать их.

Как я могу сказать Django слушать и принимать файлы таким образом? Все документы по загрузке файлов в Django вращаются вокруг обработки файлов, загруженных из формы в Django, поэтому я не уверен, как разместить файлы в противном случае.

Если бы я мог предоставить больше информации, я был бы рад. Все, что поможет мне начать, будет высоко оценено.

1 Ответ

11 голосов
/ 13 июня 2011

Создайте небольшое представление, которое игнорирует каждый метод, кроме POST, и убедитесь, что оно не имеет CSRF защиты:

from django import forms

class UploadFileForm(forms.Form):
    title = forms.CharField(max_length=50)
    file  = forms.FileField()

from django.views.decorators.csrf import csrf_exempt
from django.http import HttpResponse, HttpResponseNotAllowed, HttpResponseServerError

# Imaginary function to handle an uploaded file.
from somewhere import handle_uploaded_file

@csrf_exempt
def upload_file(request):
    if request.method != 'POST':
        return HttpResponseNotAllowed('Only POST here')

    form = UploadFileForm(request.POST, request.FILES)
    if not form.is_valid():
        return HttpResponseServerError("Invalid call")

    handle_uploaded_file(request.FILES['file'])
    return HttpResponse('OK')

См. Также: Добавление REST в Django

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