gpt4 book ai didi

javascript - 如何将 json 发布到 backbone.js 中的 api 方法?

转载 作者:行者123 更新时间:2023-11-30 17:46:41 25 4
gpt4 key购买 nike

我有基于 django rest 框架的 rest api,它包括下一个创建对象的方法,它在 'myapp/create_obj/' 上获取 JSON 格式的数据,如果数据是正确的对象将创建,否则它也会以 JSON 格式返回错误。

def create_obj(request):
stream = StringIO(request.raw_post_data)
data = JSONParser().parse(stream)
serializer = ObjSerializer(data=data, many=True)
if serializer.is_valid():
serializer.save()
return JSONResponse(serializer.data, status=201)
else:
return JSONResponse(serializer.errors, status=400)

我还尝试在 backbone.js 上创建一个模块,将表单数据中的输入发布到此方法。我对 js 很陌生,尤其是对 backbone,我不明白 backbone 如何与服务器 api 一起工作。我有类似的东西

App.module('Createobj', function(Mod, App, Backbone, Marionette, $, _) {

Mod.id = 'create-obj';
Mod.controllers = {};

Mod.Obj = Backbone.Model.extend({
defaults: {
real_ref : '',
share : ''
}
});

Mod.View = Marionette.ItemView.extend({
id: 'create-obj-page',
template: '#tpl-create-obj-page',
model: Mod.obj,

ui: {
'real_ref': 'input[name=real_ref]',
'share': 'input[name=share]',
'error': 'div.error'
},

hammerEvents: {
'tap button': 'submit:tap'
},

hammerOptions: {
tap: true
},

showError: function(message) {
this.ui.error
.text(message)
.show();
},

hideError: function() {
this.ui.error.hide();
},
});

Mod.Controller = SRClient.PageController.extend({
id: Mod.id + '.main',
ViewClass: Mod.View,

setup: function() {
this.listenTo(this.view, 'submit:tap', this.submit);
},

submit: function() {
var real_ref = this.view.ui.real_ref.val(),
share = this.view.ui.share.val();

if (!real_ref || !share) {
this.view.showError($t('create-obj.error_empty_fields'));
return;
}

App.vent.trigger('loading-screen:show', $t('app.please_wait'));

var obj = new Mod.obj({
real_ref : this.view.ui.real_ref.val(),
share : this.view.ui.share.val()
});

}});

Mod.addInitializer(function() {
Mod.Controllers = {
default: Mod.Controller
};
App.pageControllers[Mod.id] = Mod;
});
});

我需要做什么,我在 webform 中输入的数据以 json 格式发送到 'myapp/create_obj'?谢谢!

最佳答案

Backbone 需要一个 RESTful api,因此 REST 不是像 create_obj 这样的 Action 端点,而是与资源和 HTTP 方法一起工作。在您的情况下,您可以拥有这样的模型:

var Obj = Backbone.Model.extend({
defaults: {
real_ref : '',
share : ''
}
});

和这样的集合

var Objects = Backbone.Collection.extend({
url: 'myapp/obj',
model: Obj
});

该集合有一个指定服务器端点的属性 url。所以操作将是

  • POST/myapp/obj/创建一个新项目
  • GET/myapp/obj/:id/如果你想检索一个特定的项目
  • GET/myapp/obj/检索整个列表
  • PUT/myapp/obj/:id/更新一个项目
  • DELETE/myapp/obj/:id/删除一个项目

Tastypie是一个用 Django 创建 RESTful api 的好框架。

关于javascript - 如何将 json 发布到 backbone.js 中的 api 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20006078/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com