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

Django如何通过对象ID正确跳转,解决{% url %}标签及URL拼接错误问题

正确修正方法

方案1(推荐:使用Django原生url模板标签)

你之前的{% url %}写法存在语法错误,参数不能直接拼接在路由名称的字符串里,需要作为标签的额外参数传入,同时标签内部调用变量不需要再加{{ }}包裹。
直接修改productview.html里的按钮代码即可:

<button onclick="window.location.href='{% url 'Checkout' objects.id %}'">

该写法会自动根据你urls.py中配置的路由规则生成正确的绝对路径,后续如果调整路由路径只要修改urls.py即可,不需要同步修改模板代码。

方案2(手动写绝对路径)

如果你要手动写路径,需要在路径开头加/声明是根路径开始的绝对路径,避免相对路径基于当前页面URL拼接的问题:

<button onclick="window.location.href='/Store/Checkout/{{objects.id}}'">

该方案不推荐,若后续上级路由的Store/前缀修改,所有手动写的路径都需要同步调整。


补充优化建议

建议你修改urls.py中的路径配置,给动态路径加上尾部斜杠,适配Django默认的APPEND_SLASH机制,避免不必要的301重定向:

urlpatterns = [
    path('', views.Store, name= "Store"),
    path('Checkout/<id>/', views.createlocation, name="Checkout"),
    path('Product/<id>/', views.product_details, name="Product")
]

内容的提问来源于stack exchange,提问作者The Ultraempoleon

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 02:24:00