如何在Django模板语言中使用JavaScript变量作为URL参数?
解决方案
不用放弃Django的{% url %}标签,你可以通过生成带占位符的基础URL,再用JS替换占位符的方式实现需求,这样既能保留URL反向解析的维护优势,又能动态传入JS变量。
具体操作如下:
- 先确保
urls.py里delete_data的路由配置正确(假设第一个参数是业务ID,第二个参数是固定的all):
# urls.py示例 path('delete_data/<int:pk>/<str:scope>/', views.delete_data, name='delete_data')
- 在模板的JS代码中,先让Django生成包含占位符的基础URL,再在函数内替换占位符为目标变量:
function deleteData(toBeDeleted) { // 用占位符__ID__让Django先生成URL的固定结构 const baseUrl = "{% url 'delete_data' '__ID__' 'all' %}"; // 将占位符替换为传入的JS变量toBeDeleted const actualUrl = baseUrl.replace('__ID__', toBeDeleted); $.ajax({ type: "GET", url: actualUrl, success: function (data) { alert(data); } }); }
方案优势
- 当你修改
urls.py里delete_data的URL路径时,模板中的baseUrl会通过Django反向解析自动更新,不用手动修改JS代码,避免了两处维护不一致的问题。 - 占位符可以选
__ID__这类不会和业务参数冲突的字符串,确保替换时不会误改URL其他部分。
内容的提问来源于stack exchange,提问作者Youssef Ihab
相关产品推荐
相关产品推荐

