You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过超链接向Django URL路径传字符串?链接失效排查

问题解决方案

问题根源

你的代码存在两处关键错误:

  1. URL配置中的name属性使用了错误格式,包含路径参数语法<str:mapName>,不符合Django对路由别名的要求。
  2. HTML模板中的{% url %}标签调用方式错误,未通过正确路由别名传递参数,而是硬编码了路径片段。

修正步骤

1. 修正URL配置

将路由的name改为纯标识符(比如map_strategies),移除参数语法:

app_name = "overwatch"
path('maps/<str:mapName>', views.mapStrategies, name='map_strategies'),

2. 修正HTML模板的超链接

使用正确的路由别名,并传递mapName参数给{% url %}标签:

<div id="item">
    <a href="{% url 'overwatch:map_strategies' mapName='blizzard' %}">
        <img
            src="{% static 'pics/blizzard-world.jpg' %}"
            alt="Blizzard World"
        />
    </a>
</div>

原理说明

  • Django的路由name是标识路由的别名,必须是不含参数语法的纯字符串,不能包含<str:mapName>这类路径参数定义。
  • 模板中的{% url %}标签需要通过路由别名生成URL,同时必须传入路由定义要求的参数(此处为mapName),Django会自动根据路由规则拼接出正确的URL路径。之前的写法让Django无法匹配到对应路由别名,导致点击链接时URL不被识别,但手动输入路径符合路由的path规则,所以能正常访问。

内容的提问来源于stack exchange,提问作者Richard Holloway

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 00:25:27