HTML文件中的Python代码不起作用(Django)



我有两个模板,一个叫做索引.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_stringget_template获取模板对象,后跟.render()方法

查看 django 模板文档 这里 了解更多细节。

相关内容

  • 没有找到相关文章

最新更新