javascript - Django jQuery 发布请求

标签 javascript jquery django post request

$.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...

我得到:[05/Oct/2012 12:03:58] "POST/something/HTTP/1.1"403 2294

我想通过 jQuery 将此数据(姓名和年龄)发送到“SomeView”中的此发布功能。这与加载的模板是相同的 View ,只是请求类型不同。在 get() 模板加载和发布时,应该调用 post() 函数。可能吗?我检查了其他问题并得到了这个解决方案。它应该工作。我做错了什么?

最佳答案

你的问题的答案是你做错了什么,是:不多!

如果传入的 POST 请求未通过 Csrf 检查,Django 将返回 403 响应(禁止访问)。 您可以通过 jQuery 的 ajaxSetup 执行此操作,找到代码片段 here

这对 GET 请求起作用的原因很简单,就是 GET 请求没有被 csrf 中间件检查。

由于您正在此处构建表单,因此需要考虑的另一件事是使用基于类的表单。他们为您处理获取/发布以及参数验证。井井有条。特别是当您制作表单来编辑/创建/删除模型实例时,在这种情况下您可以享受 ModelForms 的强大功能。和创建 View 。非常整洁。

掌握那些基于通用类的 View 可能需要一些时间。但这是非常值得的。

关于javascript - Django jQuery 发布请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12744159/

相关文章:

javascript - 如何从 benchmark.js 获取报告

JavaScript隐藏元素函数

Python 列表到位运算

python - django 计算一个字段但按另一个字段分组

django - 我可以在同一个应用程序中使用不同的根 URL 吗?

javascript - 启动时的 jQuery 计数器完全加载页面

javascript - 不能在 safari 浏览器中 html 输入标签 sendfile .civic 类型的图像扩展名?

javascript - 带有小初始脚本和异步加载所有其他脚本的 Webpack

javascript - AngularJS int 映射不起作用?

jquery - 使用 jQuery 设置 XML 字符串中的值