我是Django的初学者,遇到了一个问题。我编写了一个代码,允许我从admin添加不同的产品和类别,然后在html页面上显示它们。但是,当我单击任何显示的产品时,我希望我的产品描述显示在另一个html页面中。第一个页面运行正常(product\u list.html),但是第二个页面(product\u detail.html)有问题
url.py(不含导入):
urlpatterns = [
url(r'^category/(?P<categoryid>\d+)/$', views.product_list, name='product_list_by_category'),
#url(r'^list/(?P<id>\d+)/$', views.product_detail, name='product_detail'),
re_path('^$', views.product_list, name = 'product_list'),
url(r'^list/(?P<id>\d+)/$', views.product_detail, name='product_detail'),
]
视图.py
def product_list(request, categoryid = 1): *this one is working*
categories = Category.objects.all()
products = Product.objects.all().filter(category_id=categoryid)
context = {'categories': categories,
'products': products
}
return render(request, 'shop/product_list.html', context)
def product_detail(request, id=1): *this one is not displaying anything*
productt = Product.objects.all().filter(id = id)
return render(request, 'shop/product_detail.html', {'product': productt})
产品详情.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<a href="http://localhost:8000/shop/list/{{product.id}}/">{{product.description}}</a>
</body>
</html>
你知道为什么产品细节呈现的页面没有显示任何内容吗
@DanielRoseman是对的,但是为了防止在没有具有该id的产品时出错,您有3个选项。第一个是做一个queryset,得到第一个元素,然后检查是否有结果,如下所示:
第二个选项是将
get
方法包装在try except
周围:最后一个选项是使用get_object_or_404,它:
filter
返回查询集。查询集没有id
或description
属性您需要使用
get
来获取实例:相关问题 更多 >
编程相关推荐