簡體   English   中英

如何將python / Django列表/字典轉換為javascript

[英]How to get python/Django lists/dictionaries into javascript

我想將一些服務器端數據推送到我的JavaScript中,以進行顯示。 我有一個可序列化的字典對象的列表,它們表示要在javascript中使用的數據模型的各個部分。 這些對象的定義如下:

event_types = EventType.objects.all()
    et = []
    for t in event_types:
        et.append({'name' : t.name, 'internal_name' : t.internal_name}) # both names are strings

我將它們在上下文變量中推送到模板中,然后嘗試將其添加到javascript中:

<script type="text/javascript">
    var event_types = {{event_types}};
</script>

這不起作用,因為我收到“意外令牌'&'”作為JavaScript錯誤。 然后,我嘗試注釋掉該代碼並查看呈現的內容,這就是我看到的內容:

[{&#39;name&#39;: u&#39;My Event&#39;, &#39;internal_name&#39;: u&#39;my_event&#39;}];

顯然,這不是理想的格式。 將服務器端Django數據推送至Javascript的正確方法是什么?

看到的格式是因為傳遞給模板的對象已使用其repr表示形式轉換為字符串,然后對這些字符串進行了html編碼(因此,如果它們以文本形式顯示在頁面上,則可以看到正確的頁面上的python repr )。

您想要的是將對象轉換為Javascript語法,而不是對其進行進一步編碼。

幸運的是,內置的json.dumps會將您的對象轉換為JSON。 您還需要關閉該塊的轉義:

{% autoescape off %}
<script type="text/javascript">
    var event_types = {{event_types}};
</script>
{% endautoescape %}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM