Загрузить API для сервера Django - PullRequest
4 голосов
/ 30 января 2012

Я работаю над созданием приложения django для обслуживания моих коллекций фотографий.Я думаю, что я почти все понял, за исключением того, как реализовать API, который я могу использовать для автоматической загрузки изображений с моего компьютера из программы какао (например, плагин Apple Aperture) или скрипта Python.Задачи здесь:

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

После небольшого исследования кажется, чтоРазличные структуры REST могут помочь, хотя они кажутся кувалдой для такой простой проблемы.Два вопроса:

  • как правильно проверить подлинность моего пользовательского скрипта перед загрузкой файлов?
  • как на самом деле загрузить сами файлы?API REST клиента и сервера обычно фокусируются на взаимодействиях json / xml и, похоже, не помогают с файлами.

Будем весьма благодарны за любые более общие рекомендации или примеры.

1 Ответ

3 голосов
/ 30 января 2012

Самый простой способ сделать это - защитить представление этим фрагментом для базовой аутентификации , который просто проверяет форму. форма может проверять метаданные и содержать поле загрузки файла, которое автоматически позаботится о получении и хранении файла на сервере. Тогда это просто вопрос загрузки данных с помощью POST.

, например

class FileUploadForm(Form)
    title = CharField()
    picture = FileField()

@logged_in_or_basicauth(realm="FileUpload")
def upload_view(request):
    if request.method == "POST"
        data = FileUploadForm(request.POST, request.FILES)
        if data.is_valid():
            #save out the file to the webserver here
        else:
            raise Exception('Data not valid! did you forget enctype="form/multipart"?')
    else:
       return HttpResponseForbidden("You do not have permission to access this resource")

Преимущество этого в том, что вы также можете легко использовать это представление в качестве цели веб-страницы.

клиентская сторона:

python: см. http://www.voidspace.org.uk/python/articles/authentication.shtml для взаимодействия с сервером базовой аутентификации.

локон:

curl http://name:passwd@domain/upload/ -T uploadablepic.jpg -d title=holiday&date=2012-10-02
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...