我正在尝试在Django中打印价格为购物车

时间:2016-11-01 14:43:54

标签: python django

当我通过上下文时,另一端似乎无法使用它,使其变得更简单并举一个例子我将尝试传递我的所有产品并简单地列出所有产品ID& #39; s,它不起作用,当我访问该页面时,我得到的只是一个空白页面。

views.py

def cart(request):
items = [1,2,3,4]
template = loader.get_template("Cafe/cart.html")
ip = get_client_ip(request)
order = current_order.objects.order_by('id')
products = product.objects.order_by('id')
context = {
    'order': order,
    'products': products,
    'items': items
}
return HttpResponse(template.render(request))

cart.html

    <head>
{% load static %}
{% load app_filters %}
<link rel="stylesheet" type="text/css" href="{% static 'Cafe/stylesheet.css' %}" />
</head>
<body>
  {% for product in products %}
    <a>{{product.id}}</a>
  {% endfor %}
</body>

models.py

class product(models.Model):
    categories = (
        ('HD', 'Hot Drink'),
        ('CD', 'Cold Drink'),
        ('Br', 'Breakfast'),
        ('Sa', 'Sandwich'),
        ('Ex', 'Extras'),
        ('Sp', 'Specials'),
    )
    product_name = models.CharField(max_length=100)
    category = models.CharField(max_length=2, choices=categories, default=categories[0][0])
    price = models.FloatField()

我没有看到为什么这不应该起作用的原因,因为同样的概念适用于我所做的所有其他页面。

1 个答案:

答案 0 :(得分:1)

而不是像这样渲染你的模板:

return HttpResponse(template.render(request))

你可以这样做:

...
context = {'order': order, 'products': products, 'items':items}
return render(request, "cafe/cart.html", context)

现在渲染任何内容时都没有使用context变量,因此您无法在模板中访问它。像这样使用render并提供上下文字典将使您能够访问dict中的所有项目,就像您期望的那样。