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

Django项目实现商品详情页动态跳转功能技术求助

实现Django商品详情页的动态链接功能

我来帮你一步步搞定这个需求,先梳理下你现有代码里的问题,再逐个修正实现:

1. 先修正Models.py的基础错误

你的Product类继承对象错了,应该继承models.Model,而且FloatField不需要max_length参数,顺便加个__str__方法方便后台管理:

# models.py
from django.db import models

class Product(models.Model):  # 这里要继承models.Model,不是request!
    name = models.CharField(max_length=255)
    cost = models.FloatField()  # FloatField不需要max_length参数
    info = models.CharField(max_length=2000)

    def __str__(self):
        return self.name  # 可选,在admin后台能直接看到商品名称,方便管理

2. 配置URL路由,新增详情页地址

你需要在app的urls.py里添加一个详情页的路由,用商品ID作为动态参数:

# urls.py(你的app下的urls文件)
from django.urls import path
from . import views

urlpatterns = [
    path('', views.index, name='index'),
    # 新增这条:用<int:product_id>接收商品ID,对应视图函数的参数
    path('product/<int:product_id>/', views.product_detail, name='product-detail'),
]

3. 重写视图函数,新增详情页逻辑

原来的information视图逻辑完全不对,我们重新写一个product_detail视图,通过商品ID精准获取对应商品:

# views.py
from django.shortcuts import render, get_object_or_404
from .models import Product

def index(request):
    products = Product.objects.all()
    return render(request, 'index.html', {'products': products})

# 新增详情页视图:通过product_id参数获取商品,找不到就返回404
def product_detail(request, product_id):
    # get_object_or_404比直接get更友好,避免抛出DoesNotExist异常
    product = get_object_or_404(Product, id=product_id)
    return render(request, 'product_detail.html', {'product': product})

4. 修改index.html,给商品添加动态链接

你的模板里有两个小错误:<l1>是拼写错误,应该是<li>;{{ product.price }}要改成{{ product.cost }}(因为models里的字段是cost)。然后用Django的{% url %}模板标签生成动态链接:

<!-- index.html -->
<ul>
{% for product in products %}
<li>
    <!-- 用{% url '路由名称' 商品ID %}生成动态链接 -->
    <a href="{% url 'product-detail' product.id %}">{{ product.name }} ${{ product.cost }}</a>
</li>
{% endfor %}
</ul>

5. 创建详情页模板product_detail.html

最后新建一个详情页模板,展示商品的详细信息:

<!-- product_detail.html -->
<h1>{{ product.name }}</h1>
<p>价格: ${{ product.cost }}</p>
<p>商品详情: {{ product.info }}</p>
<!-- 可以加个返回列表的链接 -->
<a href="{% url 'index' %}">返回商品列表</a>

这样操作后,用户点击商品列表里的任意商品,就能跳转到对应的详情页,展示该商品的具体信息了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 15:58:11