我的看法是:
def creating_profile(request):
if request.is_ajax and request.method == "POST":
array = request.POST.get('nums')
print(request.POST.get('nums'))
else:
print('it's not ajax')
我的js:
const RegisterForm = document.forms["RegisterForm"];
const csrftoken = document.querySelector('[name=csrfmiddlewaretoken]').value;
let nums = [1, 2, 3]
RegisterForm.addEventListener('submit', () => {
$.ajax({
headers: { 'X-CSRFToken': csrftoken },
url: '/account/creating-profile/',
type: 'POST',
data: { nums: nums },
success: function (data) {
//
}
});
但是它返回None
print(request.POST.get('nums'))
的结果,如果有人能帮助我解决这个问题,我会很高兴
更新:
2条答案
按热度按时间jei2mxaa1#
我不是很熟悉 AJAX ,但是每当我试图将数据从表单传递到视图时,我都会使用FormData:
这会将表单的所有字段添加到字典中,您可以通过字段名称访问值。您可以使用.append()在它上面添加
然后在您的请求中可以使用
并在视图中使用
编辑:
你的JS看起来像这样:
这样做会在服务器上POST两次,如果你不阻止默认POST发生,你可以阻止它这样做:
或者使用事件侦听器和preventDefault(参见文档:https://developer.mozilla.org/en-US/docs/Web/API/Event/preventDefault)
brgchamk2#
您可以使用
getlist()
方法从POST访问列表对象,如下所示关于***MultiValueDictKeyError***如果数据不存在于
request.POST['key']
中,则会发生***MultiValueDictKeyError***解决方案是使用get()
方法,如果给定的键没有任何值,则会返回***None***,并且不会引发任何异常。检查此doc.