如何从Backbone模型中获取属性,获取Django auth后端API

时间:2017-03-19 03:00:36

标签: javascript django backbone.js

我正在项目中使用django auth后端,Django REST框架API和Backbone。

var User = Backbone.Model.extend({
  urlRoot: host + 'api/users/'
});

// django auth response
var isAuthenticated = {{ request.user.is_authenticated|yesno:"true,false" }};
if (isAuthenticated){
  var userID = {{ request.user.id }}; // django user id
  console.log(userID); // checking value
  var currentUser = new User({id: userID});
  currentUser.fetch();
  var username = currentUser.get('username');
  console.log(currentUser); // checking value

console.log(currentUser)

的结果
attributes: Object
    email: "y****@*****m"
    first_name: ""
    id: 1
    is_staff: true
    last_name: ""
    url: "http://127.0.0.1:8000/api/users/1/"
    username: "yorsant"

如何阅读attributes:Object

1 个答案:

答案 0 :(得分:0)

Eric said一样,fetch是异步的。

您在控制台中看到了数据,因为您浏览对象所花费的时间足以完成API的往返。

Object initial appearance in the console Object after being evaluated by the console

Chrome开发工具控制台会保留对要记录的对象的引用,然后当用户与其进行交互时(通过单击折叠对象),会显示对象旁边的一点!,您可以阅读:

  

刚刚评估了下面的价值。

Backbone Model fetch function提供了您可以传递的不同选项,例如success回调。

currentUser.fetch({
    success: function() {
        console.log("username:", currentUser.get('username'));
    }
});

了解这一点,在Backbone视图中,您可以使用Backbone's events来了解属性何时可以使用。

var View = Backbone.View.extend({
    initialize: function() {
        this.listenTo(this.model, 'sync', this.render);
        this.model.fetch();
    },

    // this is called when the model's sync event is fired, so
    // when the model's attributes are ready.
    render: function() {
        this.$el.html(this.template(this.model.toJSON()));
        return this;
    }
});
  

"同步" (model_or_collection, response, options) - 当模特或   集合已成功与服务器同步。