Django通过path传递变量出现路径重复问题的解决方法
解决方案
出现路径重复拼接的核心原因是你使用了相对路径填写href属性,浏览器会默认基于当前页面的URL父级路径拼接新地址,才会触发重复projects前缀的问题。可通过以下两种方案解决:
方案1:修改为绝对路径写法
直接在href的路径开头加斜杠/,调整为/projects/some_string。开头的斜杠会告知浏览器从域名根路径开始拼接地址,无论当前处于哪个子页面下,最终生成的地址都是<ip>/projects/some_string,不会出现重复前缀问题。方案2(Django场景更推荐):使用路由反向解析
第一步先给你的路由规则配置name属性:path('projects/<s>', PL.projects, name='projects')第二步在HTML模板中用Django内置模板标签生成地址,硬编码参数写法为:
{% url 'projects' 'some_string' %}
如果传递的是模板变量,写法为:{% url 'projects' your_variable %}
该方案无需硬编码路径,后续修改路由规则也不需要批量调整模板中的地址,完全避免路径拼接错误。
内容的提问来源于stack exchange,提问作者Dawit Tilahun
相关产品推荐
相关产品推荐

