【发布时间】:2012-07-18 08:49:18
【问题描述】:
我用这两个资源构建了一个 RESTful API(使用了美味的派):
class PhotographerResource(ModelResource):
album = fields.ToManyField('core.api.AlbumResource', 'album_set')
class Meta:
queryset = Photographer.objects.all()
resource_name = 'photographer'
authorization = Authorization()
class AlbumResource(ModelResource):
artist = fields.ForeignKey(PhotographerResource, 'photographer', full=True)
class Meta:
queryset = Album.objects.all()
resource_name= 'albums'
authorization = Authorization()
现在当我访问/api/v1/albums/1 时,我得到以下结果:
{
"album": ["/api/v1/albums/4/", "/api/v1/albums/5/"],
"photographer_name": "Jimi Hendrix",
"photographer_thumbnail": "http://upload.wikimedia.org/wikipedia/commons/thumb/0/0d/Katatonia_in_2004.jpg/300px-Katatonia_in_2004.jpg",
"biography": "Jimmi Hendrix is an awesome musician man...",
"id": "1",
"page_link": "http://ahmetkaya.com/",
"resource_uri": "/api/v1/artists/1/",
"slug": "jimi-hendrix"
}
现在在我的前端,即 Backbonejs,当我想要获取摄影师的相册时,我必须创建一个 album 对象,fetch 来自服务器的数据以在视图中呈现它。现在我的问题是,这种方法(向服务器发送许多请求)不会减慢页面的加载速度并对用户体验和应用程序性能产生负面影响吗?有没有更好的方法来设计我的资源之间的关系?
或者,用处理save 和fetch 的Django 视图替换RESTful API 是否更好,或者这不是“正确”的做法?我想在学习时遵循约定和最佳实践,但是 Backbonejs 似乎真的没有约定..
谢谢
【问题讨论】:
-
` 我必须创建一个相册对象,从服务器获取数据以在视图中呈现它。 ` 是的,这会变慢,但这就是重点。用户不会对查看所有相册照片感兴趣吗?就在他正在播放列表中的那个时。您必须实现巧妙的用户界面,以便用户必须在两个视图之间切换才能查看艺术家和照片
标签: django django-models backbone.js tastypie