Путаница с Backbone.js и Django

Я пытаюсь использовать Backbone.js для своего проекта Django, и это сбивает с толку. Итак, насколько я понимаю, мне нужно tastypie для RESTful API с Django, в котором я новичок, поэтому, например, у меня есть SongResource, как показано ниже:

class SongResource(ModelResource):
    class Meta:
        queryset = Song.objects.all()
        authorization = Authorization()

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

Другое дело, допустим, у меня есть пять моделей в моем приложении Django, должен ли я также создавать модели Give в Backbone.js? Итак, в Backbone.js я просто получаю данные из Django и манипулирую ими во внешнем интерфейсе вместо представлений Django, к которым я привык?

Если вы видите мое замешательство, пожалуйста, направьте меня к некоторым статьям, учебникам, видео!

Большое спасибо


person Community    schedule 22.06.2012    source источник
comment
Возможно, представление о передней и задней системах как о «независимых» друг от друга поможет отделить ваш мыслительный процесс :)   -  person PhD    schedule 22.06.2012


Ответы (1)


Вам определенно нужно выполнять фильтрацию на стороне Django :) Я ничего не знаю о deliciouspie, но для текущего (вошедшего в систему) пользователя у вас есть это в сеансе django, поэтому вы не можете полагаться на Meta.queryset, вместо этого набор запросов изменяется для каждого запроса. Вероятно, вам нужно переопределить какой-то метод представления.

Что касается сохранения прослушанных песен, вы сначала решаете, когда это сделать (начало или конец песни), и в этом случае вы save() используете некоторую Listening (магистральную) модель, которая инициирует запрос XHR (см. Backbone.sync).

Да, вы должны использовать модели Backbone для своих моделей Django, если вы используете их на стороне клиента. Опять же, см. Backbone.sync

person skrat    schedule 22.06.2012
comment
хорошо, скажем, песня считается listened to, когда она закончена. Backbone отправит запрос в Django, верно? если да, должен ли я обрабатывать этот запрос в представлении Django классическим способом? Значит, смысл API в том, чтобы просто предоставить Backbone данные и позволить ему манипулировать ими? - person ; 22.06.2012
comment
так, например, если в моем маршрутизаторе у меня есть /playlist/:id, это означает, что в моем URLconf я должен иметь что-то вроде url(r'^playlist/(?P<id>.$)' и назначить представление, которое обрабатывает запрос (например, сохранить созданный плейлист и т. д. и т. д.)? Спасибо, что терпели меня. - person ; 22.06.2012