Django Ajax开发:如何将jQuery获取的变量传入请求URL
解决方案
你遇到的核心是Django模板标签和JS的执行时机差异:{% url %}是服务端渲染阶段就生成静态内容的,你用JS拿到的动态app_id是页面加载后客户端才生成的值,没法直接写入模板标签里,根据你后端视图的参数接收方式选下面任意一种适配即可:
方案1:适配路径参数的后端路由(你的urls.py配置类似path('update_status/<int:app_id>/', views.update_status, name='update_status'))
用占位符替换的方式拼接路径,修改你的AJAX配置里的url行即可:
$.ajax({ // 先传0作为占位符,模板渲染后会得到类似 /update_status/0/ 的路径,再用JS替换成实际的app_id url: "{% url 'update_status' 0 %}".replace('0', app_id), data:{ 'new_app_status':app_status, }, success: function (response) { }, error: function (response) { console.log(response.errors); }, });
方案2:适配查询参数的后端路由(你的后端通过request.GET.get('app_id')获取参数)
直接把app_id加到AJAX的请求参数里即可,不需要修改url,框架会自动把参数拼到请求路径后:
$.ajax({ url:"{% url 'update_status' %}", data:{ 'app_id': app_id, // 新增这一行即可 'new_app_status':app_status, }, success: function (response) { }, error: function (response) { console.log(response.errors); }, });
内容的提问来源于stack exchange,提问作者Alpha
相关产品推荐
相关产品推荐

