在Django项目中如何通过Ajax将JS变量传递给Python后端函数
解决方案
1. 调整前端AJAX代码,添加传递参数的配置
GET请求的自定义参数通过AJAX配置项的data字段传递,jQuery会自动将其处理为查询参数拼接在请求URL后发送到后端:
function calling (){ var local = 25 $.ajax({ type:'GET', url:'printsome/', // 新增data字段,键名可自定义,后端对应取值即可 data: { local_val: local }, success: function(response){ console.log('success'); console.log(local); }, error: function (response){ console.log('error'); } }); }
2. 调整后端Django视图,接收并打印参数
Django中GET请求的参数统一通过request.GET对象获取,对应前端定义的键名取值即可:
def print_some(request): from django.http import JsonResponse print('this python function was called') // 第二个参数为取不到参数时的默认值,避免空值报错 local_val = request.GET.get('local_val', 0) // 打印前端传递的变量 print(f"接收到的前端局部变量值:{local_val}") return JsonResponse({})
补充说明
如果后续需要改用POST请求传递参数,需要额外适配两点:
- 前端AJAX配置中
type改为'POST',同时携带CSRF校验参数:如果JS代码写在Django模板内,可以直接在data字段添加csrfmiddlewaretoken: '{{ csrf_token }}' - 后端取值逻辑改为
request.POST.get('local_val', 0)
内容的提问来源于stack exchange,提问作者kitchen800
相关产品推荐
相关产品推荐

