Backbone.js を初めて試しています。私は Django を初めて使用するわけではないので、Django アプリへのバックボーンを利用したフロントエンドを構築しようとしています。いくつかの調査の後、Tastypie がおそらく最も簡単であると判断しました。
多くの論争の後、私はこの問題を抱えています。オブジェクトを作成することはできますが、オブジェクトを取得することはできません。
だから私はこれを行うことができます:
var foo = new LabSite()
var newInfo={name:"Mine",site_code:"FRED"}
foo.save(newInfo)
ID が 1 の「Mine」という名前の新しい LabSite が admin に表示されます。
これを試すと:
var bar = new LabSite({id:1})
bar.fetch({
success: function (bar) {
alert(bar.toJSON());
}
})
アラートが表示されません。
引き返すオブジェクトでは、応答として次のようになります。
responseText: "callback({"id": "1", "name": "Mine", "resource_uri": "/api/v1/labsite/1/","site_code": "FRED"})"
返されたので、値はありません。たぶん、何かが応答を理解していませんか?
この backbone-tastypie プロジェクトを使用してみましたが、何も変わりませんでした: https://github.com/amccloud/backbone-tastypie
私の ModelResource はとてもシンプルです:
class LabSiteResource(ModelResource):
def determine_format(self, request):
return 'text/javascript'
class Meta:
queryset = LabSite.objects.all()
authorization= Authorization()
そして、私が見に行くとhttp://localhost:8000/api/v1/labsite/1/
:
callback({"id": "1", "name": "Mine", "resource_uri": "/api/v1/labsite/1/", "site_code": "FRED"})
なぜ私は何もフェッチできないのですか?
EDIT以下のコメントに基づいて、エラーをキャッチしようとしました。
var errorInfo = {};
var bar = new LabSite({id:1})
bar.fetch({
success: function (bar) {
alert(bar.toJSON());
},
error: function(a1,a2,a3) {
errorInfo=[a1,a2,a3]
}
});
errorInfo
多くの有用な情報を提供しませんでした-これはそれが何であったかです:
> errorInfo[0]
d
_escapedAttributes: Object
_pending: Object
_previousAttributes: Object
_silent: Object
attributes: Object
changed: Object
cid: "c1"
id: 1
__proto__: x
> errorInfo[1]
[...]
readyState: 4
responseText: "callback({"id": "1", "name": "Mine", "resource_uri": "/api/v1/labsite/1/", "site_code": "FRED"})"
setRequestHeader: function (a,b){if(!v){var c=a.toLowerCase();a=u[c]=u[c]||a,t[a]=b}return this}
state: function (){return c}
status: 200
statusCode: function (a){if(a){var b;if(v<2)for(b in a)r[b]=[r[b],a[b]];else b=a[x.status],x.always(b)}return this}
statusText: "OK"
[....]
> errorInfo[2]
Object
error: function (d,e){e=d===b?e:d;a?a(b,e,c):b.trigger("error",b,e,c)}
success: function (d,e,f){if(!b.set(b.parse(d,f),a))return!1;c&&c(b,d)}
__proto__: Object
はerrorInfo[1].status
、通信が完全に検出されerrorInfo[1].responseText
、正しいデータであることを示しているようです。今まで以上に混乱しているかもしれません。