点击商品跳转详情页时出现NoReverseMatch错误的解决方法
问题根源
错误出在listing.html模板中:你在图片链接的{% url %}标签里使用了i.id和i.name,但当前模板的上下文变量是listing(由views.py的listing函数传入),不存在i这个变量。这导致传递给URL反向解析的参数为空字符串,触发了NoReverseMatch错误。
修复步骤
修正listing.html的模板变量
将模板中所有的i替换为listing,同时更新URL反向解析的参数:<main> <div class="sing-container"> <div class="sing-header"> <h2> {{ listing.name }} </h2> </div> </div> <div class="sing-container"> <div class="sing-header"> <h2> {{ listing.name }} </h2> </div> <div class="sing-content"> {% if listing.photo_present != None %} <div class="sing-img"> {% if listing.photo_url != None %} <div class="img-center"> <a href="{% url 'listing' listing.pk listing.name %}"> <img src=" {{ listing.photo_url }} " alt=""> </a> </div> {% else %} <div class="img-center"> <a href="{% url 'listing' listing.pk listing.name %}"> <img src=" media/{{ listing.photo_upload }} " alt=""> </a> </div> {% endif %} {% endif %} </div> </div> </main>可选优化(避免后续问题)
- 确保
Listing模型的name字段设置了blank=False,防止商品名称为空导致URL解析失败; - 可以将商品名称转为slug格式(替换空格、特殊字符),避免URL出现非法字符。例如在模型中添加
slug字段,或在视图中处理名称后传递给模板。
- 确保
内容的提问来源于stack exchange,提问作者tices
相关产品推荐
相关产品推荐

