我的问题是,Backbone尝试在结尾处带有斜杠的URL上执行HTTP请求,如下所示:

:8000/api/v1/update/2/

出于某种原因,Django(或asteapie)不接受以斜杠结尾的URL,因此上述URL无法使用,但该URL可以使用:
:8000/api/v1/update/2

当不使用覆盖的同步时,Backbone-tastypie会退回到oldSync,这是Backbone随附的原始同步。我相信,当Backbone-tastypie使用oldSync时,它会在URL的末尾添加一个斜杠,这是我不希望的。

建议的大多数解决方案都在解决我遇到的相反问题。他们正在尝试解决斜杠有效的问题,但是没有斜杠无效。

除了非跟踪斜杠之外,我还需要能够支持结尾斜杠。这可以通过两种方式解决:
  • 如何更改主干样式代码,以便没有AJAX调用在末尾附加斜杠?
  • 如何做到这一点,以便Django / tastypie将上述两个URL视为相同?

  • 这些方法中的任何一个都可以解决我的问题,但是我无法弄清楚如何实现其中的任何一个。

    最佳答案

    对于Backbone解决方案:

    您可以覆盖Model.url的默认行为,甚至可以使用普通的Collection并进行少量修改,例如您要查找的修改:

    // 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;
      }
    });
    

    ojit_code同样适用。

    09-25 16:59
    查看更多