我有两个模板,一个叫做索引.html另一个叫做购物车.html。 index.html文件接受python代码,但是如果我将完全相同的代码放在购物车中.html则无法识别Python。 我正在与Django合作。我该如何解决这个问题?
索引.html Python 代码工作的地方
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<table>
<tr>
<th>List of car parts available:</th>
</tr>
{% for product in products_list %}
<tr>
<td>{{ product.name }}</td>
<td>{{ product.price }}</td>
<td>
{% if product.in_cart == False %}
<a href=""></a>
</td>
<td>{{ product.ordered }}</td>
</tr>
{% endfor %}
</table>
</body>
</html>
购物车.html Python 代码不起作用的地方
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<table>
<tr>
<th>List of car parts available:</th>
</tr>
{% for product in products_list %}
<tr>
<td>{{ product.name }}</td>
<td>{{ product.price }}</td>
<td>
{% if product.in_cart == False %}
<a href=""></a>
</td>
<td>{{ product.ordered }}</td>
</tr>
{% endfor %}
</table>
</body>
</html>
views.py
from django.http import HttpResponse
from django.template import loader
from .models import Product
# from django.shortcuts import render
def index(request):
products_list = Product.objects.all()
template = loader.get_template('products/index.html')
context = {'products_list': products_list}
return HttpResponse(template.render(context, request))
def cart(request):
cart_list = Product.objects.filter(in_cart == True)
template = loader.get_template('products/cart.html')
context = {'cart_list': cart_list}
return HttpResponse(template.render(context, request))
传递给模板的上下文数据与您在模板中调用的变量不匹配。
从您的 views.py 文件中:
def cart(request):
cart_list = Product.objects.filter(in_cart == True)
template = loader.get_template('products/cart.html')
context = {'cart_list': cart_list}
return HttpResponse(template.render(context, request))
然后在您的购物车中.html文件:
{% for product in products_list %}
您需要更改购物车.html以便循环{% for product in cart_list %}
,因为cart_list
是您添加到上下文中的变量。
对于 Django,如果 HTML 文件由 Django 处理,代码只能在 HTML 中工作 - 这意味着你必须使用 Django 的 HTML 模板处理工具之一。
更常用的是:render_to_string
或get_template
获取模板对象,后跟.render()
方法
查看 django 模板文档 这里 了解更多细节。