在我的HTML中,我有一个对象data
。。Data最初是从views.py
中的Django中的SQL查询中检索的,并使用render()传递给HTML
data
看起来像这样
data1= {
0:{
pk:1,
model:"binaryQuestionApp.painting",
fields: {title:'Pearl',artist:"vermeer"},
},
1:{
pk:2,
model:"binaryQuestionApp.painting",
fields: {title:'Sand',artist:"vermeer"},
}
}
我使用以下JS,所以将data
发送回views.py
(我使用this question创建csrftoken)
function post_data() {
var postdata = {
'data': data,
'csrfmiddlewaretoken': csrftoken
};
$.post('', postdata); // POST request to the same view I am now
};
现在,数据正在发送回服务器,但我无法访问它。我在views.py
if request.method == 'POST':
data = request.POST
# so far it works. But i can not index like this:
print(data[0]['pk']
# instead I need to index it strangely, like this:
print(data['data[0][pk]']) # note the entire key is a string
如何将数据发送到Django,以便我可以使用数据[0] [' pk']在views.py
中访问它?
答案 0 :(得分:0)
我自己想通了。
首先,您需要将对象解析为JSON。
var postdata = {
data: JSON.stringify(data),
'csrfmiddlewaretoken': csrftoken
};
然后postdata
可以使用(注意$,这用jquery)
$.post('', postdata); // POST request to the same view I am now
在服务器端,在views.py
中,您需要使用get()
方法:
import json
def index(request):
if request.method == 'POST':
data = request.POST.get('data')
data = json.loads(data)
print(data[0]['model']) # this indexing will depend on your own setup, works just like any python dict