2015-07-02 2 views
1

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

BB.Politician = Backbone.Model.extend({ 
    defaults: { 
     type: "Politician" 
    }, 
    url: "/my_url_here" 
}); 
var currentUser = new BB.Politician({"entityId": "1625"}); 
currentUser.fetch({ 
    //method: "POST", 
    success: function(user){ 
     currentUserView.render(); 
    } 
}); 

#Flask server code 
@app.route('/my_url_here', methods=['GET', 'POST']) 
def return_poitician(): 
    print request 
    print request.args 
    print request.values 

    #none of the above print statements are giving me the "entityId" 
    return data 

Я также попытался добавить в ИО в маршруте, но это просто бросил ошибку 404, когда fetch() выполняется:

@app.route('/my_url_here/<entityId>', methods=['GET', 'POST']) 
def return_poitician(entityId): 
    print entityId 

ответ

2
@app.route('/my_url_here/<entityId>', methods=['GET', 'POST']) 

ISN 't собираю любые id, потому что вы их не отправляете.

выборки Backbone использует id поле модели для построения выборки URL, в вашем случае я бы рекомендовал отключив entityId в id:

BB.Politician = Backbone.Model.extend({ 
    defaults: { 
     type: "Politician" 
    }, 
    url: "/my_url_here" 
}); 
var currentUser = new BB.Politician({"id": "1625"}); 

и пусть Backbone построить GET, который будет выглядеть так:

"/my_url_here/" + this.get('id'); // this refers to model 

, который превращается в

"/my_url_here/1625" 

Backbone.Model.url также принимает функцию как значение, поэтому вы можете определить свою собственную логику для построения URL-адресов. Например, если вы должны сохранить entityId вы можете построить свой url как:

url: function() { 
    return "/my_url_here" + this.get('entityId'); 
} 
+0

Сво странную вещь. Я попытался переключить 'entityId' на просто' id', но он не регистрировал/не добавлял id на url. У меня сложилось впечатление, что именно так оно и работает с моделями, что он запросил URL-адрес с прилагаемой моделью. Я не знаю, почему он не регистрируется в моем приложении. Однако переключение на функцию, как во второй части вашего ответа, сработало. Благодарю. – Craicerjack

+1

Если ваша модель существует без коллекции, вы должны использовать 'urlRoot' вместо' url', см. Здесь: http://backbonejs.org/#Model-url –

+0

Это объяснит это. Спасибо за помощь. Мне кажется, мне нужно начать перечитывать документы. – Craicerjack

Смежные вопросы