我正在项目中使用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
?
答案 0 :(得分:0)
与Eric said一样,fetch
是异步的。
您在控制台中看到了数据,因为您浏览对象所花费的时间足以完成API的往返。
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)
- 当模特或 集合已成功与服务器同步。