You need to enable JavaScript to run this app. Django中<int:id>参数路由点击后未跳转对应HTML页面问题
优惠活动
大模型
产品
解决方案
定价
更多

Django中<int:id>参数路由点击后未跳转对应HTML页面问题

Django路由跳转URL更新但页面不加载问题解决

关联代码

前端跳转逻辑

模板中点击图片跳转的代码如下:

<div class="image">
    <a href="/accounts/startlistening/{{i.song_id}}">
        <img src="{{i.image.url}}">
    </a>
</div>

其中模板变量i.song_id为整数值。

原路由配置

项目urls.py初始路由代码:

urlpatterns = [
    url('register/', views.registration, name="signup"),
    url('login/', views.loginUser, name="login"),
    url('logout/', views.logoutUser, name="logout"),
    url('upload/', views.upload, name="upload"),
    url('startlistening/', views.startlistening, name="startlistening"),
    url('startlistening/<int:id>', views.player, name="player") 
]

对应视图函数

player页面的视图逻辑:

def player(request, id):
    song = Song.objects.filter(song_id = id).first()
    return render(request, 'accounts/player.html',{'song':song})

异常表现

启动服务测试时,点击跳转图片后浏览器URL会正常更新,例如从http://127.0.0.1:8000/accounts/startlistening/变为http://127.0.0.1:8000/accounts/startlistening/17,但页面内容没有同步更新,没有加载预期的player.html页面。

解决方案

问题根因为Django中url()方法为旧版本路由定义方式,默认按正则规则匹配,不支持<int:id>这类路径转换器语法,导致带参数的跳转请求优先匹配到了前面无参数的startlistening/路由,没有执行对应的player视图逻辑。
将urls.py中所有url()方法替换为path()方法后,问题即可解决。


内容的提问来源于stack exchange,提问作者Rajaram Karki

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 03:21:02