Django 前后臺的數(shù)據(jù)傳遞的方法
Django 從后臺往前臺傳遞數(shù)據(jù)時(shí)有多種方法可以實(shí)現(xiàn)。
最簡單的后臺是這樣的:
from django.shortcuts import render def main_page(request): return render(request, 'index.html')
這個(gè)就是返回index.html的內(nèi)容,但是如果要帶一些數(shù)據(jù)一起傳給前臺的話,該怎么辦呢?
一 view -> HTML 使用Django模版
這里是這樣:后臺傳遞一些數(shù)據(jù)給html,直接渲染在網(wǎng)頁上,不會有什么復(fù)雜的數(shù)據(jù)處理(如果前臺要處理數(shù)據(jù),那么就傳數(shù)據(jù)給JS處理)
Django 代碼:
from django.shortcuts import render
def main_page(request):
data = [1,2,3,4]
return render(request, 'index.html', {'data': data})
html使用 {{ }} 來獲取數(shù)據(jù)
<div>{{ data }}</div>
可以對可迭代的數(shù)據(jù)進(jìn)行迭代:
{% for item in data%}
<p>{{ item }}</p>
{% endfor %}
該方法可以傳遞各種數(shù)據(jù)類型,包括list,dict等等。
而且除了 {% for %} 以外還可以進(jìn)行if判斷,大小比較等等。具體的用法讀者可以自行搜索。
二 view-> JavaScript
如果數(shù)據(jù)不傳給html用,要傳給js用,那么按照上文的方式寫會有錯誤。
需要注意兩點(diǎn):
1.views.py中返回的函數(shù)中的值要用 json.dumps() 處理
2.在網(wǎng)頁上要加一個(gè) safe 過濾器。
代碼:
views.py
# -*- coding: utf-8 -*-
import json
from django.shortcuts import render
def main_page(request):
list = ['view', 'Json', 'JS']
return render(request, 'index.html', {
'List': json.dumps(list),
})
JavaScript部分:
var List = {{ List|safe }};
三 JavaScript Ajax 動態(tài)刷新頁面
這個(gè)標(biāo)題的意思是:網(wǎng)頁前臺使用Ajax發(fā)送請求,后臺處理數(shù)據(jù)后返回?cái)?shù)據(jù)給前臺,前臺不刷新網(wǎng)頁動態(tài)加載數(shù)據(jù)
Django 代碼:
def scene_update_view(request):
if request.method == "POST":
name = request.POST.get('name')
status = 0
result = "Error!"
return HttpResponse(json.dumps({
"status": status,
"result": result
}))
JS 代碼:
function getSceneId(scece_name, td) {
var post_data = {
"name": scece_name,
};
$.ajax({
url: {% url 'scene_update_url' %},
type: "POST",
data: post_data,
success: function (data) {
data = JSON.parse(data);
if (data["status"] == 1) {
setSceneTd(data["result"], scece_name, td);
} else {
alert(data["result"]);
}
}
});
}
JS 發(fā)送ajax請求,后臺處理請求并返回status, result
在 success: 后面定義回調(diào)函數(shù)處理返回的數(shù)據(jù),需要使用 JSON.parse(data)
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Python如何根據(jù)照片修改時(shí)間重命名并排序詳解
重命名操作是我們開發(fā)中經(jīng)常遇到的一個(gè)需求,下面這篇文章主要給大家介紹了關(guān)于Python如何根據(jù)照片修改時(shí)間重命名并排序的相關(guān)資料,需要的朋友可以參考下2021-05-05
Python+OpenCV進(jìn)行不規(guī)則多邊形ROI區(qū)域提取
ROI即感興趣區(qū)域。機(jī)器視覺、圖像處理中,從被處理的圖像以方框、圓、橢圓、不規(guī)則多邊形等方式勾勒出需要處理的區(qū)域,稱為感興趣區(qū)域,ROI。本文將利用Python和OpenCV實(shí)現(xiàn)不規(guī)則多邊形ROI區(qū)域提取,需要的可以參考一下2022-03-03
PyTorch實(shí)現(xiàn)手寫數(shù)字識別的示例代碼
本文主要介紹了PyTorch實(shí)現(xiàn)手寫數(shù)字識別的示例代碼,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下<BR>2022-05-05
python基礎(chǔ)教程項(xiàng)目四之新聞聚合
這篇文章主要為大家詳細(xì)介紹了python基礎(chǔ)教程項(xiàng)目四之新聞聚合,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-04-04
python算法測試結(jié)果自動保存到excel表格的實(shí)現(xiàn)步驟
我們在進(jìn)行算法評估是通常會針對每個(gè)樣本的算法處理結(jié)果進(jìn)行統(tǒng)計(jì),例如每個(gè)樣本正確預(yù)測數(shù)量、漏檢數(shù)量和誤檢數(shù)量、精度等,本文小編將給大家介紹python算法測試結(jié)果自動保存到excel表格的實(shí)現(xiàn)步驟,感興趣的朋友可以參考下2023-12-12

