[英]Pass Json from Django to template with JavaScript Staticfile
[英]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.