4

私の問題は、Backboneが次のように末尾にスラッシュが付いたURLに対してHTTPリクエストを実行しようとしていることです。

:8000/api/v1/update/2/

何らかの理由で、Django(またはtastypie)は末尾にスラッシュが付いたURLを受け入れないため、上記のURLは機能しませんが、このURLは機能します。

:8000/api/v1/update/2

Backbone-tastypieは、オーバーライドされた同期を使用しない場合、Backboneに付属する元の同期であるoldSyncにフォールバックします。Backbone-tastypieがoldSyncを使用すると、URLの最後にスラッシュが追加されると思いますが、これは望ましくありません。

提案されている解決策のほとんどは、私が抱えている反対の問題に対処しています。彼らは、末尾のスラッシュが機能するという問題を修正しようとしていますが、末尾のスラッシュが機能しないという問題を解決しようとしています。

非末尾のスラッシュに加えて、末尾のスラッシュをサポートできる必要があります。これは2つの方法で修正できます。

  1. バックボーン-tastypieコードを変更して、AJAX呼び出しが最後にスラッシュを追加しないようにするにはどうすればよいですか?

  2. Django / tastypieが上記の2つのURLを同じものとして扱うようにするにはどうすればよいですか?

それらのいずれかが私の問題を解決しますが、それらのいずれかを実装する方法を理解することはできません。

4

2 に答える 2

7

Tastypie / Djangoに、末尾のスラッシュを許可または禁止するように指示できます。

ここを見てください

于 2012-05-12T15:56:26.123 に答える
5

解決策のBackbone場合:

Model.url通常の動作を使用して、探しているような小さな変更を加えても、のデフォルトの動作を上書きできます。

// code simplified and not tested
var MyModel: Backbone.Model.extend({
  url: function() {
    var original_url = Backbone.Model.prototype.url.call( this );
    var parsed_url = original_url + ( original_url.charAt( original_url.length - 1 ) == '/' ? '' : '/' );

    return parsed_url;
  }
});

同じが。に適用されCollectionます。

于 2012-05-11T17:51:52.837 に答える