Django汽车经销商应用car_detail路由NoReverseMatch报错求助
报错原因
你的car_detail路由配置要求同时传递id和slug两个参数,但Model中get_absolute_url方法反向解析时仅传入了slug一个参数,参数数量不匹配导致解析失败。
解决方案
方案1:最小改动(保留现有路由、视图逻辑)
仅修改Models.py中的get_absolute_url方法,补全缺失的id参数即可:
def get_absolute_url(self): return reverse('car_detail', kwargs={'id': self.id, 'slug': self.slug})
方案2:简化URL(适合SEO优化场景)
如果不需要id出现在URL中,可以调整代码仅用slug作为唯一查询条件:
- 修改
urls.py路由配置,删除id参数:
path('<slug:slug>', views.car_detail, name="car_detail"),
- 修改
views.py中的car_detail视图逻辑,用slug查询车辆数据:
def car_detail(request, slug): car = get_object_or_404(Car, slug=slug) images = CarImage.objects.filter(car=car) context = {'car': car, 'images': images} return render(request, 'car_detail.html', context)
两种方案任选其一即可解决问题。
内容的提问来源于stack exchange,提问作者nick.cmn
相关产品推荐
相关产品推荐

