You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取点击的Listing模型项ID?(Django开发场景)

解决Django中通过链接获取Listing ID并生成指定格式URL的问题

你的问题核心是URL模板标签未传递完整参数,导致无法匹配urls.py中定义的路径,进而无法正确获取Listing的ID。以下是具体修正步骤:

1. 修正模板中的链接生成

urls.py里定义的路径是<int:id>/<str:name>,要求传递id和name两个参数。你当前的模板中,部分链接只传了i.id,还有部分没传任何参数,这都会导致URL匹配失败。

把所有Listing相关的链接修改为:

<a href="{% url 'listing' i.id i.name|slugify %}">
  • i.id:传递Listing的主键ID
  • i.name|slugify:用Django内置过滤器把名称转换成URL友好格式(比如空格替换为横杠、特殊字符转义),让URL更规范。

修正后的index.html关键部分示例:

<!-- 图片链接 -->
<a href="{% url 'listing' i.id i.name|slugify %}">
    <img src=" {{ i.photo_url }} " alt="">
</a>

<!-- 标题链接 -->
<a href="{% url 'listing' i.id i.name|slugify %}">
    <h4>{{ i.name }}</h4>
</a>

<!-- 价格、描述链接同理,都要传递两个参数 -->

2. 调整视图函数接收参数

由于urls.py的路径定义了id和name两个参数,视图函数必须接收这两个参数(哪怕name仅用于URL美观,实际查询只用id)。

修改views.py:

from .models import Listing

def listing(request, id, name):
    # 仅用id查询对应的Listing,name参数不参与业务逻辑
    listing = Listing.objects.get(pk=id)
    return render(request, 'auctions/listing.html', {
        'listing': listing
    })

3. 验证效果

修改完成后,点击主页的任意Listing条目,URL会自动生成为http://127.0.0.1:8000/[id]/[slugified-name]的格式,视图通过id参数正确获取到对应的Listing对象,详情页也能正常显示{{ listing.id }}。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 20:18:20