0

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

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

我找到的最相关信息的帖子可以在这里找到:使用 Django 和 Python 创建 JSON 响应

为简单起见,我将展示一个通用的硬编码 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 视图中使用。

4

3 回答 3

2

请参阅有关如何在 Ajax 请求中包含 CSRF 令牌的文档。

于 2013-10-23T12:28:22.780 回答
0

使用标准 Python 库来反序列化 JSON 数据,并且只需使用Django 模型 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 请求。

于 2013-10-22T14:30:47.143 回答
0

这是 csrf 的问题,在传递 JSON 对象时出现 403 错误。

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

于 2013-10-23T13:41:39.050 回答