Django 前后臺(tái)的數(shù)據(jù)傳遞的方法
Django 從后臺(tái)往前臺(tái)傳遞數(shù)據(jù)時(shí)有多種方法可以實(shí)現(xiàn)。
最簡(jiǎn)單的后臺(tái)是這樣的:
from django.shortcuts import render def main_page(request): return render(request, 'index.html')
這個(gè)就是返回index.html的內(nèi)容,但是如果要帶一些數(shù)據(jù)一起傳給前臺(tái)的話,該怎么辦呢?
一 view -> HTML 使用Django模版
這里是這樣:后臺(tái)傳遞一些數(shù)據(jù)給html,直接渲染在網(wǎng)頁(yè)上,不會(huì)有什么復(fù)雜的數(shù)據(jù)處理(如果前臺(tái)要處理數(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使用 {{ }}
來(lái)獲取數(shù)據(jù)
<div>{{ data }}</div>
可以對(duì)可迭代的數(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用,那么按照上文的方式寫會(huì)有錯(cuò)誤。
需要注意兩點(diǎn):
1.views.py中返回的函數(shù)中的值要用 json.dumps()
處理
2.在網(wǎng)頁(yè)上要加一個(gè) safe 過(guò)濾器。
代碼:
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 動(dòng)態(tài)刷新頁(yè)面
這個(gè)標(biāo)題的意思是:網(wǎng)頁(yè)前臺(tái)使用Ajax發(fā)送請(qǐng)求,后臺(tái)處理數(shù)據(jù)后返回?cái)?shù)據(jù)給前臺(tái),前臺(tái)不刷新網(wǎng)頁(yè)動(dò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請(qǐng)求,后臺(tái)處理請(qǐng)求并返回status, result
在 success: 后面定義回調(diào)函數(shù)處理返回的數(shù)據(jù),需要使用 JSON.parse(data)
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Python如何根據(jù)照片修改時(shí)間重命名并排序詳解
重命名操作是我們開發(fā)中經(jīng)常遇到的一個(gè)需求,下面這篇文章主要給大家介紹了關(guān)于Python如何根據(jù)照片修改時(shí)間重命名并排序的相關(guān)資料,需要的朋友可以參考下2021-05-05Python enumerate內(nèi)置庫(kù)用法解析
這篇文章主要介紹了Python enumerate內(nèi)置庫(kù)用法解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-02-02Python+OpenCV進(jìn)行不規(guī)則多邊形ROI區(qū)域提取
ROI即感興趣區(qū)域。機(jī)器視覺、圖像處理中,從被處理的圖像以方框、圓、橢圓、不規(guī)則多邊形等方式勾勒出需要處理的區(qū)域,稱為感興趣區(qū)域,ROI。本文將利用Python和OpenCV實(shí)現(xiàn)不規(guī)則多邊形ROI區(qū)域提取,需要的可以參考一下2022-03-03PyTorch實(shí)現(xiàn)手寫數(shù)字識(shí)別的示例代碼
本文主要介紹了PyTorch實(shí)現(xiàn)手寫數(shù)字識(shí)別的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下<BR>2022-05-05python基礎(chǔ)教程項(xiàng)目四之新聞聚合
這篇文章主要為大家詳細(xì)介紹了python基礎(chǔ)教程項(xiàng)目四之新聞聚合,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-04-04如何利用PyQt5制作一個(gè)簡(jiǎn)單的登錄界面
初學(xué)者制作登錄界面時(shí)常遇到網(wǎng)上代碼看不懂、不會(huì)用、用不了的問(wèn)題,下面這篇文章主要給大家介紹了關(guān)于如何利用PyQt5制作一個(gè)簡(jiǎn)單的登錄界面,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-06-06使用python實(shí)現(xiàn)簡(jiǎn)單五子棋游戲
這篇文章主要為大家詳細(xì)介紹了使用python實(shí)現(xiàn)簡(jiǎn)單五子棋游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-06-06python算法測(cè)試結(jié)果自動(dòng)保存到excel表格的實(shí)現(xiàn)步驟
我們?cè)谶M(jìn)行算法評(píng)估是通常會(huì)針對(duì)每個(gè)樣本的算法處理結(jié)果進(jìn)行統(tǒng)計(jì),例如每個(gè)樣本正確預(yù)測(cè)數(shù)量、漏檢數(shù)量和誤檢數(shù)量、精度等,本文小編將給大家介紹python算法測(cè)試結(jié)果自動(dòng)保存到excel表格的實(shí)現(xiàn)步驟,感興趣的朋友可以參考下2023-12-12