$.ajax({ url:'/', type: "POST", data: {name: 'name', age: 'age'}, success:function(response){}, complete:function(){}, error:function (xhr, textStatus, thrownError){} });
在views.py中:
class SomeView(generic_views.TemplateView): template_name = 'something.html' def get(self, request, *args, **kwargs): ...something... return self.render_to_response(context) def post(self, request, *args, **kwargs): name = request.POST['name'] age = request.POST['age'] ...something...
我想通过jQuery将此数据(名称和年龄)发送到“ SomeView”中的此发布函数。这是与加载的模板相同的视图,只是请求类型不同。在get()上加载模板,并在post上调用post()函数。可能吗?我检查了其他问题并获得了此解决方案。它应该正在工作。我究竟做错了什么?
如果传入的POST请求未能通过Csrf检查,则Django返回403响应(禁止)。你可以通过jQuery的ajaxSetup进行此操作。
这样做对GET请求起作用的原因仅是CSrf中间件不检查GET请求。
好像你在这里构建表单一样,要考虑的另一件事是使用基于类的表单。他们为你处理获取/发布以及参数验证。井井有条。特别是在制作表单以编辑/创建/删除模型实例时,在这种情况下,你可以使用ModelForms和CreateViews的功能。