如何将JavaScript变量动态传入Django生成的URL参数中
解决方案
核心逻辑:{% url %} 是Django服务端渲染标签,页面发送到浏览器时已经解析为固定字符串,JS无法直接修改服务端模板逻辑,因此用占位符替换的方式实现动态传参即可,操作步骤如下:
- 第一步:给a标签加唯一ID,同时给动态参数n传入一个不会和实际业务值重复的唯一占位符
<a id="project-data-link" href="{% url 'main:projectdata' proname=pro.projectname n='__STATE_PLACEHOLDER__' %}"></a>
- 第二步:JS侧封装更新链接的方法,每次state变更时调用该方法替换占位符即可
const linkDom = document.getElementById('project-data-link'); // 缓存服务端渲染好的带占位符的基础链接 const baseLink = linkDom.href; let state = 'Done'; // 封装更新方法 function refreshLink() { linkDom.href = baseLink.replace('__STATE_PLACEHOLDER__', state); } // 页面初始化先执行一次替换,匹配初始state值 refreshLink(); // 后续所有修改state的位置,修改完成后调用refreshLink()即可,示例: state = 'Pending'; refreshLink();
内容的提问来源于stack exchange,提问作者waleed
相关产品推荐
相关产品推荐

