我已經傳給模板常規的Python字典,我需要裏面如何將Python字典轉換爲JavaScript哈希表?
$(document).ready(function() {.. }
來轉換Python字典爲JavaScript字典。我試着像
var js_dict={{parameters}};
,但我得到的錯誤(',而不是'和所有的字符串開始U')。 如何將Python字典轉換爲JavaScript哈希表?
我已經傳給模板常規的Python字典,我需要裏面如何將Python字典轉換爲JavaScript哈希表?
$(document).ready(function() {.. }
來轉換Python字典爲JavaScript字典。我試着像
var js_dict={{parameters}};
,但我得到的錯誤(',而不是'和所有的字符串開始U')。 如何將Python字典轉換爲JavaScript哈希表?
的Python和JavaScript都有關於如何表示的字典,這意味着你不同的想法需要一箇中間表示以便在它們之間傳遞數據。最常見的做法是JSON,這是一種簡單的輕量級數據交換格式。
使用python json library將您的python字典轉換(或轉儲)爲JSON字符串。然後在JavaScript中將JSON字符串解析爲一個javascript字典。 (如果您使用的是JQuery,則使用jQuery.parseJSON)
你可以把它轉換成JSON和使用,在該模板
在Python代碼做
import json
...
...
return {'parameters': json.dumps(parameters)} #This data goes into your template
正如其他人已經建議的那樣,在您的視圖中將字典轉換爲JSON然後將JSON傳遞到模板上下文實際上是您的最佳方法,但如果您想要把它保存爲模板中的python字典,你可以;你只需要手動創建JavaScript版本(即你不能只是{{ parameters }}
傾倒)
<script>
var js_dict = {
{% for k, v in parameters %}
"{{ k }}": "{{ v }}"{% if not forloop.last %},{% endif %}
{% endfor %}
}
</script>
由克里斯·帕拉特的回答下面的啓發工作示例(注意區別):
42 var js_dict = [
43 {% for k, v in parameters.iteritems %}
44 ["{{ k }}","{{ v }}"] {% if not forloop.last %},{% endif %}
45 {% endfor %}
46 ];
在處理Django模板中的變量時,默認的python的json lib似乎不適用於我。
您可以使用json.dumps(parameters)
與mark_safe()
def custom_view(request):
...
return render(request, 'tmpl.html', {'parameters': mark_safe(json.dumps(parameters))})
隨着mark_safe()
我在模板中得到轉義代碼。
您不需要發送字典。
這裏是我是如何實現這一點:
views.py
def mess_opi(request):
data = Opi_calculated.objects.all()
return render(request,'hab_app/opi_student_portal.html', {'data': data})
我的模板(用於morris.html):
data: [{% for item in data %}
{ "y": '{{ item.hostelName }}', "a": '{{ item.opi_value }}' }{% if not forloop.last %},{% endif %}
{% endfor %}],
你檢查,如果有一個在Python中相當於JSON.stringify? – lowerkey 2012-04-09 13:01:44