为什么我不能把相对复杂的JS对象放到我的Django视图中?
Why can't I post relatively complex JS objects to my Django view?
使用Django 1.5.5,我试图使用$.post
发布一个JS对象到我的视图。
var oDatas = { 'csrfmiddlewaretoken': $.cookie('csrftoken') };
oDatas['2'] = [ '4', '8', '15', '16', '23', '42' ];
$.post('/my/ajax/url/', oDatas)
.done(function(oResponse, sStatus, oXHR) {
// Handling successful request
})
.fail(function(oXHR, sStatus, sErrorThrown) {
// Handling failed request
});
<<h3>视图/h3>@require_AJAX
@require_POST
def get_bacon(request):
datas = request.POST
print datas
response = HttpResponse('asdf', status=200)
return response
输出<QueryDict: {u'2[]': [u'4', u'8', u'15', u'16', u'23', u'42'],
u'csrfmiddlewaretoken': [u'B4micC9PgcT5jCP0WLef0ZLY9DICuH8Z']}>
注意键实际上是'2[]'
。
它确实工作与oDatas['2'] = 'foobar';
。我错过了什么?
相关SO答案
- https://stackoverflow.com/a/18046286/1824222
您可以尝试使用tasks[]而不是通过ajax发送任务作为参数
在我的情况下,使用'2[]'
作为我的数据的键。不过听起来确实很恶心。
尝试通过body
属性访问它。文档
def get_bacon(request):
if request.is_ajax() and request.method == 'POST':
datas = request.body
else:
datas = request.POST
print datas
response = HttpResponse('asdf', status=200)
return response
您可能必须解析json对象如下:
import json
def get_bacon(request):
datas = json.loads(request.body)
编辑:对不起,我忘了说,您必须在ajax调用中对数据进行字符串化。
var oDatas = { 'csrfmiddlewaretoken': $.cookie('csrftoken') };
oDatas['2'] = [ '4', '8', '15', '16', '23', '42' ];
$.post('/my/ajax/url/', JSON.stringify(oDatas))
.done(function(oResponse, sStatus, oXHR) {
// Handling successful request
})
.fail(function(oXHR, sStatus, sErrorThrown) {
// Handling failed request
});
我想我的问题是。request.POST
在这里是一个QueryDict对象。Django(1.5.5),扁平化任何相对复杂的 - read 嵌套的 - JS对象。
datas = dict(request.POST.iterlists())
datas.pop('csrfmiddlewaretoken')
注意,我使用iterlists
只是因为我的QueryDict对象包含列表。否则请使用iteritems
。
那么datas
字典就是这样的Python字典:
{ 'foods[joe][]': [ 'bacon', 'chicken', ],
'foods[clara][]': [ 'lettuce', 'yogurt', 'oreo', ], }
相关文章:
- 我的django模板布尔变量是't在javascript中按预期工作
- 如何将淡出图像添加到我的Django页面
- Django混合了我的模板
- 如何在 django 中添加 javascript 文件到我的 ModelForm 中
- 欧芹.js在我的 Django 表单验证中不起作用
- 简单的 ajax GET 请求在我的 Django 网页上不起作用
- 如何防止在 django 模板中缓存我的 Javascript
- 我的 Django/Python 代码没有在 HTML 页面中渲染 HTML 标签
- 如何在使用 django 的 html 页面中从一个选项卡移动到另一个选项卡时将请求发布到我的 url,该页面有多个选项
- 如何让我的django应用程序在滚动时加载内容
- TinyMCE:格式化我的TinyMCE编辑器会扼杀django的功能
- 为什么我的 Django 视图无法从我的 Django 模板中创建的标签接收数据
- 无法使用JSON.在我的django模板中解析
- 为什么我的Angular前端不传递正确的$http ?获取参数到Django后端
- 为什么我不能把相对复杂的JS对象放到我的Django视图中?
- jQuery不重新排列元素在我的Django页面
- 包括CSS和Javascript在我的django模板
- 该网页确实'不要对我的javascript代码(django)中的更改采取行动
- Django-ckeditor渲染完整的小部件,而不是我的自定义小部件
- 我应该从一个简单的django AJAX视图返回什么样的响应?