Django电商项目单个产品页面无法加载问题求助
问题解决:产品详情页无法加载的原因及修复
核心问题分析
你遇到的问题根源在于路由路径拼写错误,同时需要确保参数类型与数据匹配:
- 路由路径拼写错误:
urls.py中产品详情的路由写的是prodcucts/<str:pk>/,多了一个字母c,而你访问的路径是api/products/2,路径不匹配导致请求无法命中对应的视图函数。 - 参数类型匹配:如果你的
products列表中_id是整数类型,使用<int:pk>才能保证参数类型一致,避免字符串与整数比较不相等的问题。
修复步骤
1. 修正路由路径
将urls.py中的错误路径修正为正确拼写,并使用<int:pk>确保参数类型匹配:
from django.urls import path from . import views urlpatterns = [ path('', views.getRoutes, name="routes"), path('products/', views.getProducts, name="products"), # 修正拼写错误,并使用<int:pk>匹配整数ID path('products/<int:pk>/', views.getProduct, name="product"), ]
2. 验证数据类型匹配
确认products列表中每个元素的_id为整数类型,此时视图中的比较逻辑i['_id'] == pk可以正常工作。如果_id是字符串类型,需要将视图中的pk转为字符串再比较:
@api_view(['GET']) def getProduct(request, pk): product = None for i in products: # 如果_id是字符串,将pk转为字符串后比较 if i['_id'] == str(pk): product = i break return Response(product)
验证
修改完成后重新启动服务,访问api/products/2即可正常加载对应产品的详情页。
内容的提问来源于stack exchange,提问作者Myrodis
相关产品推荐
相关产品推荐

