Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/90.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django html页面不显示我在视图中传递的变量_Python_Html_Django_Display - Fatal编程技术网

Python Django html页面不显示我在视图中传递的变量

Python Django html页面不显示我在视图中传递的变量,python,html,django,display,Python,Html,Django,Display,我是Django的初学者,遇到了一个问题。我编写了一个代码,允许我从admin添加不同的产品和类别,然后在html页面上显示它们。但是,当我单击任何显示的产品时,我希望我的产品描述显示在另一个html页面中。第一个页面运行得很好(product_list.html),但是第二个页面(product_detail.html)有问题 url.py(不含导入): 产品详细信息.html <!DOCTYPE html> <html lang="en"> <head>

我是Django的初学者,遇到了一个问题。我编写了一个代码,允许我从admin添加不同的产品和类别,然后在html页面上显示它们。但是,当我单击任何显示的产品时,我希望我的产品描述显示在另一个html页面中。第一个页面运行得很好(product_list.html),但是第二个页面(product_detail.html)有问题

url.py(不含导入):

产品详细信息.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>

标题

您知道为什么product_detail呈现的页面不显示任何内容吗?

过滤器
返回查询集。查询集没有
id
description
属性

您需要使用
get
来获取实例:

productt = Product.objects.get(id=id)

filter
返回查询集。查询集没有
id
description
属性

您需要使用
get
来获取实例:

productt = Product.objects.get(id=id)

@DanielRoseman是对的,但为了防止在没有具有该id的产品时出错,您有3个选项。第一个是执行查询集并获取第一个元素,然后检查是否有结果,如下所示:

productt = Product.objects.filter(id=id).first()
if productt is None:
    # do something to let the user know the product doesn't exist
第二个选项是将
get
方法包装在
try except
周围:

try:
    productt = Product.objects.get(id=id)
except Product.DoesNotExist:
    # do something to let the user know the product doesn't exist
最后一个选项是使用,它:

在给定的模型管理器上调用get(),但它会引发Http404而不是模型的DoesNotExist异常


@DanielRoseman是对的,但为了防止在没有具有该id的产品时出错,您有3个选项。第一个是执行查询集并获取第一个元素,然后检查是否有结果,如下所示:

productt = Product.objects.filter(id=id).first()
if productt is None:
    # do something to let the user know the product doesn't exist
第二个选项是将
get
方法包装在
try except
周围:

try:
    productt = Product.objects.get(id=id)
except Product.DoesNotExist:
    # do something to let the user know the product doesn't exist
最后一个选项是使用,它:

在给定的模型管理器上调用get(),但它会引发Http404而不是模型的DoesNotExist异常


你好谢谢,但我有个问题。另一个html精确地显示了我需要的内容,我使用了相同的sintax,没有.get。你知道为什么吗?嗨。谢谢,但我有个问题。另一个html精确地显示了我需要的内容,我使用了相同的sintax,没有.get。你知道为什么吗?嗨。谢谢,但我有个问题。另一个html精确地显示了我需要的内容,我使用了相同的sintax,没有.get。你知道为什么吗?因为在
product\u列表
视图中,你传递的是
product
s的列表,所以你可能使用
{%for products in products%}
来迭代每个项目,同时在
product\u detail
视图中,你应该传递的是一个实例
product
,而不是列表。让我知道这是否为你清除哦。是的,我想既然只有一个产品有一个特定的id,那么它将传递一个只包含一个实例的列表。我不知道它是一个列表会有问题。当你使用
filter
时,无论你使用哪个字段,它都会返回
QuerySet
。现在你知道了,快乐编码!你好谢谢,但我有个问题。另一个html精确地显示了我需要的内容,我使用了相同的sintax,没有.get。你知道为什么吗?因为在
product\u列表
视图中,你传递的是
product
s的列表,所以你可能使用
{%for products in products%}
来迭代每个项目,同时在
product\u detail
视图中,你应该传递的是一个实例
product
,而不是列表。让我知道这是否为你清除哦。是的,我想既然只有一个产品有一个特定的id,那么它将传递一个只包含一个实例的列表。我不知道它是一个列表会有问题。当你使用
filter
时,无论你使用哪个字段,它都会返回
QuerySet
。现在你知道了,快乐编码!