用python前端html后端django_淺談Django前端后端值傳遞問題

前端后端傳值問題總結

前端傳給后端

通過表單傳值

1、通過表單get請求傳值

在前端當通過get的方式傳值時,表單中的標簽的name值將會被當做action的地址的參數

此時,在后端可以通過get請求相應的name值拿到對應的value值

例子:

html中:

{% csrf_token %}

類別

{% for art in art_list %}

{{ art }}

{% endfor %}

視圖中:

def select_art(request,id):

if request.method == 'GET':

que = request.GET.get('que')

request.session['que'] = que

拿到的值可以存入session中,在前端可以通過{{ request.session[que] }}拿到對應的值

最后一頁

2、表單通過post請求傳值

當前端通過post傳值時,在視圖中可以通過POST請求拿到對應的表單中的name屬性對應的value值

通過ajax傳值

POST -----------------------------------

通過ajax的post請求可以將html頁面的值傳到對應的視圖函數中,在后端可以通過request.POST.get(鍵)獲得前端通過ajax的data中的值,request.POST獲取ajax傳遞的所有數據

注意:如果前端的dataType是json格式,后端的返回數據應該也是json格式,否則會請求不成功(但是可以接收前端ajax傳輸過來的值)。

將后端數據變為jsoon格式如下:

resp = '請求成功re'

return HttpResponse(json.dumps(resp))

或者

return JsonResponse(data)

例子~有些地方寫多余了:

html頁面:

$(function(){

$('#t1 a,#tz a').on('click',function(){

id = $(this).attr('class')

ta = $(this).text()

t = $(this)

$.ajax({

url:'/backweb/index/',

dataType:'json',

type:'POST',

data:{

ta: ta,

id:id

},

success:function(data){

if (ta == '推薦'){

t.text('不推薦')

}else if (ta == '不推薦'){

t.text('推薦')

}else if(ta == '展示'){

t.text('不展示')

}else if (ta == '不展示'){

t.text('展示')

}

},

error:function(){

alert('請求失敗')

}

})

})

})

注意:

jqery中

如果事件綁定了多個標簽,想要知道點擊的標簽可以使用$(this)獲得。

通過標簽對象.text()可以獲得標簽中的值。

通過標簽對象.val()可以獲得標簽的value值(例如在表單中的值)

通過標簽對象.attr(標簽屬性名)可以獲得標簽屬性對應的值

以上的方法都可以給參,如果有參就代表修改屬性值。

可以在標簽中定義一個屬性動態生成值

此時可以在綁定的時間函數中傳入一個同樣的參數,就可以在js中獲取當前的被點擊的標簽

+

function addToCart(good_id){

$('#num_'+ good_id).html(data.data.c_num)

}

ajax中不能通過$(this)獲得當前觸發的標簽,但是可以在ajax之外將對象獲取,在ajax中的函數中使用。

GET-----------------------------

語法:$(selector).get(url,data,success(response,status,xhr),dataType)

這是一個簡寫的GET請求功能

參數:

url:必選規定將請求發送到哪個URL

data:可選。規定聯通請求發送到服務器的數據

success(response,status,xhr):可選。當請求成功時執行的函數。

額外參數:

response - 包含后臺傳送回來的數據

status - 包含請求的狀態

xhr - 包含XMLHttpRequest對象

dataType:可選。規定預計的服務器相應的數據類型。默認的,jQuery將只能判斷。

可能的類型:

xml html text script json jsonp

等價于

$.ajax({

url: url,

data: data,

success: success,

dataType: dataType

});

實例:

1、請求test.php網頁,傳送兩個參數

$.get("test.php", { name: "John", time: "2pm" } );

2、顯示 test.php 返回值(HTML 或 XML,取決于返回值):

$.get("test.php", function(data){

alert("Data Loaded: " + data);

});

3、顯示 test.cgi 返回值(HTML 或 XML,取決于返回值),添加一組請求參數:

$.get("test.cgi", { name: "John", time: "2pm" },

function(data){

alert("Data Loaded: " + data);

});

后端傳給前端

當我們需要給前臺中傳遞數據時,可以使用以下的方法:

1、傳遞數據和html渲染,不進行復雜的數據處理

使用render()將數據傳給對應的html頁面,字典的值可以是數字、字符串、列表、字典、object、Queryset等

return render(request, 'backweb/article_detail.html',{'types': typess})

在html中使用{{ 鍵 }}來獲取數據 --- {{ types }}

可以可迭代的數據進行迭代

{% for type in types %}

type

{% endfor %}

也可以進行{% if %} {% else %}操作,注意格式:必須有結尾{% endif %}

2、傳遞數據給js使用 --- 例如ajax請求

此時views視圖中的函數中的值要用json.dumps()處理成json格式

import json

from django.shortcuts import render

def main_page(request):

list = ['view', 'Json', 'JS']

return render(request, 'index.html', {

'List': json.dumps(list),

})

在前js中使用時需要加safe過濾器 --- var List = {{ List|safe }};

ajax異步刷新例子:

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"]);

}

}

});

}

success:function(data,status,xhr){} --- data:請求成功時調用的函數 status:描述狀態的字符串 xhr:jqXHR

模板中:

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 發送ajax請求,后臺處理請求并返回status, result --- ajax的數據類型為定義為json,所以返回的數據也得是json,不然請求失敗(請求失敗不代表數據傳不到后臺,只是后臺的數據會返回失敗)

在 success: 后面定義回調函數處理返回的數據,需要使用 JSON.parse(data)

以上這篇淺談Django前端后端值傳遞問題就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持我們。

本文標題: 淺談Django前端后端值傳遞問題

本文地址: http://www.cppcns.com/jiaoben/python/325309.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/538466.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/538466.shtml
英文地址,請注明出處:http://en.pswp.cn/news/538466.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

使用Git上傳本地項目到oschina

原文地址:https://my.oschina.net/158/blog/530112 --------------------------------------------- 1.首先看一下自己是否有公鑰, 在 我的資料-->SSH公鑰 查看,如果沒有,添加自己的SSH 公鑰: SSH key 可以讓你在…

手動創建git忽略push清單,node_module以及自身

1.文件夾內右鍵git bash,輸 touch .gitignore,注意中間有空格 2.編輯器打開生成的 .gitignore 文件,加入 .gitignore node_modules12 3.保存 4.以后再push到倉庫的就會過濾這倆了,想加啥自己加

整數數組按絕對值排序

2019獨角獸企業重金招聘Python工程師標準>>> 題目: 給出一組整數數組,要求按照絕對值從小到大進行排序后輸出。 可以用經典的冒泡排序法來計算此問題,計算過程: 1、比較相鄰兩個元素絕對值,如果第一個比第二…

python定時任務是異步的嗎_定時任務、異步任務

------------定時任務、異步任務--------pip install celery --targetD:\Users\ex-ouyangl003\PycharmProjects\data_new\dg_meta_system\metadata_system\venv\Lib\site-packages# coding:utf-8from apscheduler.schedulers.blocking import BlockingSchedulerimport datetime…

java excel自動保存_java讀取excel的內容(可保存到數據庫中)

//**poi jar包//public classReadExcel {SuppressWarnings("static-access")private staticString getValue(HSSFCell hssfCell) {if (hssfCell.getCellType() hssfCell.CELL_TYPE_BOOLEAN) {//返回布爾類型的值returnString.valueOf(hssfCell.getBooleanCellValue()…

《快學Scala》勘誤

原文鏈接:http://www.blogjava.net/sean/archive/2012/11/15/391386.html ---------------- 第11頁(練習): 在Scala REPL中鍵入3,然后按Tab鍵 應為 在Scala REPL中鍵入3.,然后按Tab鍵 第19頁&#xff0…

二分排序java實現

1.什么是二分排序: 二分排序是指利用二分法的思想對插入排序進行改進的一種插入排序算法,不同于二叉排序,可以利用數組的特點快速定位指定索引的元素; 算法思想:二分法插入排序是在插入第i個元素時,對前面的…

pearson相關系數_pearson相關系數與典型相關性分析(CCA)

本文主要介紹相關系數的概念,以及簡單相關系數中的pearson相關系數及其局限性。隨后介紹pearson相關系數無法解決的問題(兩個變量組之間的相關性問題)的解決方案。1、pearson相關系數在日常中,我們經常會遇到一些關于相關性的分析,例如&#…

快學Scala習題解答—第三章 數組相關操作

原文鏈接:http://blog.csdn.net/ivan_pig/article/details/8257365 -------------------------------------------------- 4 數組相關操作 4.1 編寫一段代碼,將a設置為一個n個隨機整數的數組,要求隨機數介于0(包含)和n(不包含)之間 random和…

seo自動工具_愛站SEO工具包詳細介紹

愛站SEO工具-seoer的瑞士軍刀!這個工具主要是為了方便SEOer查詢一些網站的問題,監控關鍵詞排名收錄等等,新手老手都可以用的工具,更快的讓SEOer上手。相信有很多SEOer都使用過愛站SEO工具包,也有很多新入行的小伙伴可能…

人物三(依芙蒂法)

轉載于:https://www.cnblogs.com/song1900/p/9189921.html

常用Oracle分析函數詳解

原文鏈接:http://www.cnblogs.com/benio/archive/2011/06/01/2066106.html --------------------------------------------------------------------------- 學習步驟: 1. 擁有Oracle EBS demo 環境 或者 PROD 環境 2. copy以下代碼進 PL/SQL 3. 配合解…

XML文件結構和基本語法

XML文件的結構性內容,包括節點關系以及屬性內容等等。元素是組成XML的最基本的單位,它由開始標記,屬性和結束標記組成。就是一個元素的例子,每個元素必須有一個元素名,元素可以若干個屬性以及屬性值。 xml文件和html文…

python表格數據分類聚合_3-python數據分析-pandas高級操作之替換、映射、隨機抽樣、分組、高級數據聚合、數據加載、透視表、交叉表...

3-python數據分析-pandas高級操作之替換、映射、隨機抽樣、分組、高級數據聚合、數據加載、透視表、交叉表替換操作 replace替換操作可以同步作用于Series和DataFrame中單值替換普通替換: 替換所有符合要求的元素:to_replace15,value’e’按列指定單值替換&#xff…

oracle-SQL-case when 改用 DECODE

SELECT CASE FLOOR_LINE_ID WHEN 1 THEN 高鐵 WHEN 2 THEN 高速 WHEN 3 THEN 公路 WHEN 5 THEN 地鐵 ELSE 其他 END AS LINE_NAME, FLOOR_LINE_ID FROM ( SELECT FLOOR(LINE_ID/100) AS FLOOR_LINE_ID FROM DT4_LINE_NAME ) 改…

lcp mysql cluster_Mysql Cluster 非root用戶啟動ndbd節點報錯

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓1.配置文件,如下:[rootcent178 ~]# ls -lart /etc/my.cnf-rw-rw-r-- 1 mysql mysql 3055 Oct 31 17:29 /etc/my.cnf2.集群數據存儲文件夾,如下:[rootcent178 ~]# ls -lart /var/lib/m…

fatal: Could not read from remote repository.的解決辦法

原文地址:http://blog.csdn.net/huahua78/article/details/52330792 --------------------------------------------------------------------------------- 查看遠端地址 git remote –v 查看配置 git config --list git status git add . // 暫存所有的更改git…

python中mako中loop_python中Mako庫實例用法

Mako是一個模板庫。一種嵌入式的語言,能夠實現簡化組件布局以及繼承,主要的用途也是和作用域有關,但是效果是最直接切靈活的,這些都是mako的基本功能,掌握了基礎內容,接下來就是詳細的了解講述,…

springmvc是什么_SpringBoot與SpringMVC的區別是什么?

簡單的來說:SpringMVC和SpringBoot都是Spring家族的重要成員。Spring家族的使命就是為了簡化而生。SpringMVC簡化我們日常Web開發的,后來隨著自身的發展,SpringMVC變得臃腫復雜,而SpringBoot則進一步簡化了SpringMVC開發。SpringM…

git 上傳代碼到碼云

與碼云建立連接教程:http://blog.csdn.net/zengmingen/article/details/76045076 如果完成了上面步驟的,且有了git。上傳項目步驟: 代碼提交 代碼提交一般有五個步驟: 1.查看目前代碼的修改狀態 2.查看代碼修改內容 3.暫存需要提交…