当我尝试将python列表传递给模板中的JavaScript时,它没有按预期将列表解析为JS数组,而是返回此["Groceries", "Clothing", "Takeaways", "Alcohol"]
导致页面中断。
view.py
def labels():
category_labels = []
for item in Purchase.objects.order_by().values_list('type', flat=True).distinct():
category_labels.append(item)
return category_labels
def index(request):
try:
purchases = Purchase.objects.all().order_by('-time')
total_spending = round(Purchase.objects.aggregate(Sum('amount'))['amount__sum'], 2)
except Purchase.DoesNotExist:
raise Http404("Could not find any purchases.")
context = {
'purchases': purchases,
'total_spending': total_spending,
'spending_by_category': prepare_total_spending(),
'total_spending_all_categories': total_spending_all_categories(),
'labels': json.dumps(labels()),
}
return render(request, 'main/index.html', context)
index.html
<script type="text/javascript">
console.log(JSON.parse("{{labels}}"))
# => converts this to console.log(["Groceries", "Clothing", "Takeaways", "Alcohol"]) in JS and breaks.
</script>
参考方案
{{labels | safe}}
由@Klaus D解决。
Javascript和Python JSON-未定义变量 - javascript例如,如果您具有以下JSON对象(删除python的分号):values = { a: 1, b: { c: 2, d: { e: 3 } }, f: 4, g: 5 }; 如果您尝试在JS中打印values,它将正常工作。但是在Python中,它将返回错误NameError: name 'a' is not defined,这意味着未定…
PHP json_encode数组到javascript关联数组 - javascript我有一些从PHP中读取的mysqli列。它正在完美地获取和回显。$results = mysqli_fetch_assoc(mysqli_query($conn, $querystring)); echo json_encode($results); //$results = {"title":"Sea Shells"…
Javascript + Python:将数组发送到Python脚本,将结果返回给Javascript - javascript我想建立一个网页,该网页通过Javascript API进行许多Facebook状态更新,并将它们分类到一个数组中。然后,我想将此数组发送到Python脚本,该脚本可以专门使用NLTK.进行语言分析。在Python中获得合适的结果后,我想将结果从该脚本返回到Javascript,以显示给用户等。听起来可能吗? javascript大神给出的解决方案 是的,完…
编码JSON数据以保留json格式 - javascript由于JSON值是动态生成的,并且其中的值是基于用户输入的,因此,如果用户在字符串中输入了不可接受的字符(如"),则会使json无效。就像是:{ "tag" : "demo", "value": "user " input" } 有没有一种方法可以编码或转义JS…
导入JSONObject引发“未找到”错误 - javascript今天,我开始在互联网上搜索Unity Runtime Level Editor,最后找到OpenED。我将其导入Unity并导入了所有需求,但是JSONObject不想合作。它抛出如下错误:Assets/Plugins/OpenEd/Inspectors/OEPropertiesInspector.js(16,35): BCE0018: The name &…