Django模板调用url标签跳转用户详情页出现404错误求助
错误原因定位
- 首页模板的Django URL模板标签语法错误:你写的
{ % url 'detail' user % }中,{和%之间多了空格,导致Django没有把这段识别为模板标签,直接把字符串原样输出到了href属性里,所以请求路径才会变成{ % url 'detail' user % }的编码格式,匹配不到路由。
- 首页模板的Django URL模板标签语法错误:你写的
- URL参数传递不匹配:你的应用路由中定义的接收参数是
user_id,视图里是根据用户id(整数类型)查询用户,你直接传递user对象的话,默认会调用__str__方法返回用户姓名,而不是用户id,会导致查询失败。另外路由里定义的参数类型是str,但id是整数,类型不匹配。
- URL参数传递不匹配:你的应用路由中定义的接收参数是
修复步骤
第一步:修改首页模板代码
把链接的href部分修改为:
<a href="{% url 'detail' user.id %}">
注意去掉{和%之间的空格,同时把参数改为user.id传递用户id
第二步:修改应用URL配置
把user_detail路由的参数类型从str改为int,匹配用户id的整数类型:
path('user_detail/<int:user_id>', views.userdetail, name='detail'),
可选优化:视图添加404捕获
避免用户输入不存在的id时直接抛出异常:
from django.shortcuts import get_object_or_404 def userdetail(request,user_id): user = get_object_or_404(User, id=user_id) return render(request, 'user_detail.html', {'user': user})
内容的提问来源于stack exchange,提问作者abtrini
相关产品推荐
相关产品推荐

