2011-08-12 79 views
0

假設我在Python後端有一個數組,並且想將它作爲json或js數組傳遞到前端。我將如何使用Django框架來做到這一點?將Python中的數組傳遞給Django模板

這是模板看起來是這樣的:

<script type="text/javascript"> 
var array = {{djangoVariable}}; 
//use the array somehow 
</script> 

回答

1

完整視圖,以便你的想法:

from django.shortcuts import render_to_response 
from django.core import serializers 

def my_view(request) : 
    json_data = serializers.serialize('json', my_django_object) 
    render_to_response('my_template.html', {'json_data' : json_data}) 

+0

+1使用Django的序列化程序,它們非常有用,我應該使用它們更多 –

+0

哈哈我實際上從來沒有使用過它們,我只是粗略搜索了django文檔「json encode」,我認爲django可能有一種奇特的做事方式 –

+0

我記得當我第一次研究django的時候瞭解他們,但是因爲他們我總是我們編輯simplejson甚至'str'來滿足這種需求。 –

0

也許你應該閱讀關於如何從蟒蛇傳遞變量到模板Django的教程。

如果你的Python列表是數字列表,你可以只使用str或在其上的模塊simplejson,這將是已經JavaScript數組在模板中使用。

例如:

在views.py:

import simplejson 
def example_view(request) 
    variable = [1, 2, 3] 
    return render(request, 'example.html', {'djangoVariable': simplejson.dumps(variable)}) 
+0

事實上在python 2.6+,標準模塊JSON是完全一樣簡單的JSON –

0

在你看來:

js_variable = simplejson.dumps(django_variable) 

,並通過到您的模板以正常方式。

+0

我已經嘗試過了,但「被轉換爲":[" microones ","正常","大"," XL "]而不是[「microones」,... – danihp

3

我嘗試了答案,但認爲通過我的工作是這樣的:

在view.py

from django.shortcuts import render_to_response 
from django.utils import simplejson 


def example_view(request): 
    variable = {"myvar":[1, 2, 3]} 
    render_to_response("example.html", simplejson.dumps(variable), 
      context_instance=RequestContext(request)) 

並在example.html中

... 
<script type="text/javascript"> 
     var myvar = "{{ myvar|safe }}"; 
</script> 
... 
2

在Django中:
從django.utils導入simplejson
JSON = simplejson.dumps(YOUR_VARIABLE)

,並通過 「JSON」 在上下文中

IN JS:
變種YOUR_JS_OBJECT = {{json | safe}};