Обновление пользователя в Django с помощью Backbone.js и Tastypie

Каков правильный способ обновления пользовательских атрибутов Django (в частности, password и email) с использованием Backbone и Tastypie?

В общем, что такое хороший рабочий процесс с точки зрения API в этих двух случаях?


person Warwick    schedule 16.05.2012    source источник


Ответы (1)


Этот тип обновлений «одного поля» обрабатывается HTTP-глаголом PATCH. Таким образом, вы должны сделать запрос Ajax с помощью этого метода и данных, которые вы хотите обновить.

В завитке это будет:

curl --dump-header - -H "Content-Type: application/json" -X PATCH --data '{"email": "[email protected]"}' "http://localhost:8000/api/v1/user/1/"

Что касается Backbone, это не требование. Вы можете сохранить модель пользователя и использовать метод sync, но с вызовом Jquery.ajax() этого будет достаточно.

Jquery:

$.ajax({
  type: 'PATCH',
  url: http://localhost:8000/api/v1/user/1/,
  data: "{'email': '[email protected]'}",
  success: function(){/* your logic */},
  contentType: "application/json"
});
person santiagobasulto    schedule 16.05.2012
comment
Да, это ясно. Но я говорю о более общих вещах. Например, какова будет логика обновления поля электронной почты через API. Обычно имеет смысл сделать подтверждение по электронной почте перед обновлением. - person Warwick; 16.05.2012
comment
Если вы создали свой UserResource из класса ModelResource, вам не нужно ничего делать. Относитесь к подтверждению, это то, с чем вы должны справиться, на ваш взгляд. API — это последний шаг в любом процессе. - person santiagobasulto; 16.05.2012
comment
PATCH — правильный глагол для вызова частичного обновления. Под капотом Tastypie считывает весь объект и выдает обновление (PUT). Вы должны создать свое представление (в данном случае с HTML и JS) и запросить подтверждение у вашего пользователя. Как только он будет принят, вы используете API для изменения данных. - person santiagobasulto; 16.05.2012