簡體   English   中英

如何將 json 字典從 javascript.get 傳遞到 django 模板?

[英]How to pass json dictionary from javascript .get to django template?

在我的 django 模板的頭部,我目前有:

<script>
   $.get('get_students/', function (dict) {
        alert(dict)
   })
</script>

這提醒我有一個對應於 dict 的 json 字典,它來自以下 django 視圖:

def get_students(request):
    students = Student.objects.all()

    students_json = serializers.serialize('json', students)

    return HttpResponse(json.dumps(students_json), content_type='application/json')

是否可以將腳本標簽中的字典“轉義”到普通的 Django 模板中,以便我可以使用以下內容對其進行迭代:

{% for d in dict%}
    <p>d.username</p>
{% endfor %}

如果有更明智的方法,請推薦給我,我還在學習。 請注意,我正在一個組件內部工作,我必須從中調用視圖,這就是我使用 js get 的原因。

謝謝!

雖然它沒有直接回答問題,但不能通過使用get_context方法將數據傳遞到視圖中而不是循環它來完成嗎?

所以你的觀點會是這樣的:

class ExampleDetailView(DetailView):
model = Student

def get_context_data(self, **kwargs):
    # Call the base implementation first to get a context
    context = super().get_context_data(**kwargs)
    # Add in a QuerySet of all the books
    context['contextDictionary'] = get_students()
    return context

然后在模板中有類似的東西:

{% for d in contextDictionary %}
    <p>d.username</p>
{% endfor %}

所以答案是使用 JQuery。 在腳本標簽內,我使用 js 字符串遍歷字典值和 append 到一個 innerHTML。 所以上面的.get必須變成這樣:

 $.get('get_students/', function (data) { var write_to_div = document.getElementById("studentDiv"); for (var d in data) { value = data[d] write_to_div.innerHTML += "<p>" + value['first_name'] + "</p>" } })

這將 append 包含所有用戶的所有名字的段落到 id 為“studentDiv”的 div,所以在 HTML 模板中我有

 <div id="studentDiv"></div>

暫無
暫無

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

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