我的问题是Backbone正试图在最后用斜杠对URL做HTTP请求,如下所示:
:8000/api/v1/update/2/
出于某种原因,Django(或tastypie)最后不接受带斜杠的URL,因此上述URL不起作用,但此URL确实有效:
:8000/api/v1/update/2
Backbone-tastypie回退到oldSync,这是Backbone附带的原始同步,当不使用其重写的同步时。我相信当Backbone-tastypie使用oldSync时,它会在URL的末尾添加一个斜杠,这是我不想要的。
建议的大多数解决方案都是处理我遇到的相反问题。他们正在尝试修复尾部斜杠工作的问题,但没有尾部斜杠不起作用。
除了非尾部斜杠之外,我还需要能够支持尾部斜杠。这可以通过两种方式解决:
如何更改骨干 - tastypie代码,以便最后没有AJAX调用附加斜杠?
如何制作Django / tastypie会将上述两个网址视为相同?
其中任何一个都可以解决我的问题,但我无法弄清楚如何实现它们。
答案 0 :(得分:7)
你可以告诉Tastypie / Django允许或禁止尾随斜杠。
看here
答案 1 :(得分: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
同样适用。