Django 1.9:渲染无法将上下文传递给我的模板

时间:2016-06-08 19:48:12

标签: python django

我试图在django 1.9中使用render(请求,' sell.thml',context),我使用mysql作为我的数据库。但我的模板中没有任何内容。我不知道为什么我不能使用render将我的上下文变量传递给模板。任何人都可以帮助我吗?

在我的view.py中:

def sellmainpage(request):
    products=Product.objects.all()
    context = {
        "products": products,
    }
    return render(request, "sell.html", context)

在我的sell.html:

<div class="col-md-8 col-md-offset-2 col-sm-12 maincontent" style="padding-top:100px">
<div class="storefront_product_display" >
  {% for product in products %}
  <a href="{% url 'product_detail' %}">
  <img src="{% static 'img/logo.png' %}">
  <span class="storefront_product_name">{{ product.product }}</span>
  <span class="storefront_product_companyname">{{ product.company }} </span>
  {% endfor %}
</div>
</div>

在我的models.py中:

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

    def __str__(self):
        return self.product

2 个答案:

答案 0 :(得分:1)

向我们展示您的设置,您应该有一个文件夹“template”,并在html中

示例settings.py

BASE_DIR = os.path.dirname(os.path.realpath(__file__))
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR,'template'),],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'trabajo.context_processors.globales',
                'trabajo.context_processors.menu',
                'trabajo.context_processors.globales',
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
                'django.core.context_processors.static',
            ],
        },
    },
]

你view.py:

def sellmainpage(request):
    products=Product.objects.all()
    context = {
        "products": products,
    }
    template = "template/sell.html"
    render_to_response(template,context,context_instance=RequestContext(request))

sell.html

<!DOCTYPE html>
<html>
<head>
<title>Page Title</title>
</head>
<body>

<h1>My First Heading</h1>
<p>My first paragraph.</p>

</body>
</html> 

答案 1 :(得分:0)

而不是

return render(request, "sell.html", context)

loader.get_template('sell.html')
return HttpResponse(template.render(context,request))

不要忘记导入所需的东西。

from django.template import loader
from django.http import HttpResponse