Django 1.9无法使用{{}}将上下文变量传递给模板

时间:2016-06-08 15:10:24

标签: python django

我不知道为什么我不能使用上下文来传递我的模板,我在线查看,我必须使用上下文处理器并在我的settings.py中设置上下文处理器,为什么我不能用它来将上下文从view.py传递给模板。我用django 1.9

view.py

  from .models import Product
  def sellmainpage(request):
      products=Product.objects.all()
      context={
           'products'= products
      return render(request,'sell.html',context)

sell.html

  {% for product in products}
     <span>{{product.name}}</span>
  {% endfor %}

1 个答案:

答案 0 :(得分:3)

如果您的模型是

class Product(models.Model):
    product=models.CharField(max_length=200)
    companyname=models.ForeignKey(Company)
    description=models.TextField() 
    price=models.DecimalField(decimal_places=2,max_digits=10) 
    stock=models.IntegerField(default=0)

然后你没有名为name 的字段,也许你想要字段productcompanyname

  {% for product in products %}
     <span>{{product.product}}</span>
  {% endfor %}

  {% for product in products %}
     <span>{{product.companyname}}</span>
  {% endfor %}

如果仍然无效,您需要检查len(products)以查看它是否为空。

我想指出你有很多“琐碎”的语法问题,我强烈建议你阅读Django和Python给你的错误,并学习如何调试那些。另外,我会按照教程来解决我的技能问题。

在Python中你可以形成一个像这样的字典

context={'products': products}

context={'products'= products} # Wrong syntax, don't use

如果您坚持使用=符号,则可以使用dict

context = dict(products=products)

感谢@DeepSpace评论,你也遇到了这个问题,关闭了%}

{% for product in products %}
                           ^
                           |__ You missed this %