【问题标题】:JSON data with Django使用 Django 的 JSON 数据
【发布时间】:2013-10-30 19:34:55
【问题描述】:

我正在使用 JQuery 的 JRating 插件设置评分系统。我的所有前端工作都正常,并且正在努力将数据存储在我的数据库中。

通过我的研究,似乎使用 Django 使用这个 jquery 插件存储数据的最佳方法是发布一个 JSON 对象。不幸的是,(幸运的是!)我是 JSON 的新手。

我找到的信息最相关的帖子可以在这里找到:Creating a JSON response using Django and Python

为简单起见,我将展示一个通用的硬编码 JSON 对象,我试图将其传递给 django 视图以存储在我的数据库中。我目前正在使用这个对象,并且能够在页面上引用它。

<!-- jquery in template -->
var testJSON = [
    { "firstName":"John" , "lastName":"Doe" },
    { "firstName":"Anna" , "lastName":"Smith" },
    { "firstName":"Peter" , "lastName": "Jones" }
];

$.post('/blogsearch/setrating/', {"testJSON":testJSON}, function(msg)
{
    if(msg.error == "yes"){console.log('Error Found: '+ msg.errorMsg);}
});

然后,在我的 Django 视图中,对于这个问题,我将做一些简单的事情。如果我能让数据返回到我的视图中,我会继续剩下的。

#views.py
def setrating(request):
    response_data = {}
    return HttpResponse(json.dumps(response_data), content_type="application/json")

我愿意接受任何建议,包括完全重新设计我如何传递 JSON 数据以在我的 django 视图中使用。

【问题讨论】:

  • 您到底遇到了什么问题? JS 还是 Python?
  • 我遇到了 JS 问题。如果我可以让数据返回到我的视图中(在这个例子中,通过一个简单的 HttpResponse),我会继续剩下的。谢谢。
  • 查看控制台日志,看起来它正在尝试在 Post 中传递 JSON 对象,但收到 403 权限错误。加载资源失败:服务器响应状态为 403 (FORBIDDEN) 对于该帖子,它是否需要以某种方式与 JSON 请求一起传递的 CSRF 令牌?

标签: jquery django json post


【解决方案1】:

请参阅the documentation,了解如何在 Ajax 请求中包含 CSRF 令牌。

【讨论】:

    【解决方案2】:

    这是 csrf 的问题,我在传递 JSON 对象时收到 403 错误。

    我将来自documentation 的代码包含在主 js 文件中,并且我需要在原始 html 页面中包含 {% csrf_token %}。

    【讨论】:

      【解决方案3】:

      使用 standard Python library 反序列化 JSON 数据,只需使用 Django model API 创建和保存您的对象:

      import json
      import models.Mymodel
      data = json.loads(request.POST['testJSON'])
      for elem in data:
          m = MyModel(elem)
          m.save()
      

      对于JS端,寻找jQuery.param提交JSON请求。

      【讨论】:

        猜你喜欢
        • 2021-03-03
        • 2021-09-22
        • 2016-04-25
        • 2020-08-03
        • 1970-01-01
        • 2021-03-25
        • 2018-09-27
        • 2016-02-24
        • 1970-01-01
        相关资源
        最近更新 更多