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
相关产品推荐
相关产品推荐

