Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django:序列化QuerySet并将其发送到模板以与Javascript一起使用_Javascript_Django - Fatal编程技术网

Django:序列化QuerySet并将其发送到模板以与Javascript一起使用

Django:序列化QuerySet并将其发送到模板以与Javascript一起使用,javascript,django,Javascript,Django,我有一个QuerySet,我需要将它发送到我的模板,因为我需要操纵它的值来生成JS数组 但在我看来,我使用: order_items = json.dumps(order_items) 我得到: Object of type QuerySet is not JSON serializable 视图: models.py: 我需要使用项目生成产品阵列,以便从后端发送项目: 但是得到错误: VM1835:1未捕获的语法错误:位置处JSON中出现意外标记(&N) 0 在JSON.parse 索引

我有一个QuerySet,我需要将它发送到我的模板,因为我需要操纵它的值来生成JS数组

但在我看来,我使用:

 order_items = json.dumps(order_items)
我得到:

Object of type QuerySet is not JSON serializable
视图:

models.py:

我需要使用项目生成产品阵列,以便从后端发送项目:

但是得到错误:

VM1835:1未捕获的语法错误:位置处JSON中出现意外标记(&N) 0 在JSON.parse 索引:55

在Thank_deposit_payment.html中:

试试这个:

def thanks_deposit_payment(request):
 order_number = Order.objects.latest('id').id
 total = Order.objects.latest('id').total
 costo_despacho = Order.objects.latest('id').shipping_cost
 order_items = OrderItem.objects.filter(order=Order.objects.latest('id'))

 return JSONResponse(...here goes the dict with all data to send to view)
甚至,如果您想发送所有这些查询集,也可以在dict中发送dict。 稍后,我建议您将AJAX与JQuery结合使用。

尝试以下方法:

def thanks_deposit_payment(request):
 order_number = Order.objects.latest('id').id
 total = Order.objects.latest('id').total
 costo_despacho = Order.objects.latest('id').shipping_cost
 order_items = OrderItem.objects.filter(order=Order.objects.latest('id'))

 return JSONResponse(...here goes the dict with all data to send to view)
甚至,如果您想发送所有这些查询集,也可以在dict中发送dict。 稍后,我建议您在JQuery中使用AJAX。

您可以使用它将queryset转换为JSON字符串:

from django.core.serializers import serialize
order_items = OrderItem.objects.filter(order=Order.objects.latest('id'))
order_items = serialize('json', order_items, fields=['id', 'product', 'price'])  # the fields needed for products
然后在模板中使用它:

 products: JSON.parse('{{ order_items | safe }}')
您可以使用将queryset转换为JSON字符串:

from django.core.serializers import serialize
order_items = OrderItem.objects.filter(order=Order.objects.latest('id'))
order_items = serialize('json', order_items, fields=['id', 'product', 'price'])  # the fields needed for products
然后在模板中使用它:

 products: JSON.parse('{{ order_items | safe }}')

您可以详细介绍如何生成产品阵列吗?我不明白如何在模板中循环使用产品:JSON.parse“{{order\u items}”。还有,JSON在模板中来自哪里?我需要调用某个库吗?基本上,您是将值作为上下文发送的。您已经以json格式发送了数据。您正在使用标记,我假设它位于Thank\u deposit\u payment.html模板中。在发送order_项的值时,我已经将它们转换为字典列表。所以不需要在它们之间循环。您可以直接将该值作为products:JSON.parse“{{order_items}}”。还使用JSON.parse在JavascriptPlease中将字符串值转换为JSON,请参见更新1。我肯定误解了某些部分。请从代码中删除json.dumps。我的回答包含了您需要的实现:您可以详细介绍如何生成产品阵列吗?我不明白如何在模板中循环使用产品:JSON.parse“{{order\u items}”。还有,JSON在模板中来自哪里?我需要调用某个库吗?基本上,您是将值作为上下文发送的。您已经以json格式发送了数据。您正在使用标记,我假设它位于Thank\u deposit\u payment.html模板中。在发送order_项的值时,我已经将它们转换为字典列表。所以不需要在它们之间循环。您可以直接将该值作为products:JSON.parse“{{order_items}}”。还使用JSON.parse在JavascriptPlease中将字符串值转换为JSON,请参见更新1。我肯定误解了某些部分。请从代码中删除json.dumps。我的回答包含您需要的实现:
products: JSON.parse('[{"model": "order.orderitem", "pk": 8, "fields": {"product": "Sobre con muestras", "price": "3.00"}}]')
def thanks_deposit_payment(request):
 order_number = Order.objects.latest('id').id
 total = Order.objects.latest('id').total
 costo_despacho = Order.objects.latest('id').shipping_cost
 order_items = OrderItem.objects.filter(order=Order.objects.latest('id'))

 return JSONResponse(...here goes the dict with all data to send to view)
from django.core.serializers import serialize
order_items = OrderItem.objects.filter(order=Order.objects.latest('id'))
order_items = serialize('json', order_items, fields=['id', 'product', 'price'])  # the fields needed for products
 products: JSON.parse('{{ order_items | safe }}')