最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

淺談Django前端后端值傳遞問題

 更新時間:2020年07月15日 14:58:03   作者:HZ514  
這篇文章主要介紹了淺談Django前端后端值傳遞問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

前端后端傳值問題總結

前端傳給后端

通過表單傳值

1、通過表單get請求傳值

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

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

例子:

html中:


<form action="{% url 'backweb:select_art' %}" method="post">
 {% csrf_token %}
 <section class="mtb">
 <select class="select">
 <option value="類別" name="class">類別</option>
 {% for art in art_list %}
 <option value="{{ art }}">{{ art }}</option>
 {% endfor %}
 </select>
 <input name="art_name" type="text" class="textbox textbox_225" placeholder="輸入要查詢的文章標題"/>
 <input type="submit" value="查詢" class="group_btn"/>
 </section>
 </form>

視圖中:

def select_art(request,id):
 if request.method == 'GET':
 que = request.GET.get('que')
 request.session['que'] = que

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

<a href="{% url 'backweb:select_art' %}?page={{ page.paginator.num_pages }}&que={{ request.session.que }}" rel="external nofollow" >最后一頁</a>

2、表單通過post請求傳值

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

通過ajax傳值

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

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

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

將后端數(shù)據(jù)變?yōu)閖soon格式如下:

resp = '請求成功re'

return HttpResponse(json.dumps(resp))

或者

return JsonResponse(data)

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

html頁面:

<script type="text/javascript">
 $(function(){
 $('#t1 a,#tz a').on('click',function(){
 id = $(this).attr('class')
 ta = $(this).text()
 t = $(this)
 <!--alert(id)-->
 <!--alert($(this).text())-->
 $.ajax({
 url:'/backweb/index/',
 dataType:'json',
 type:'POST',
 data:{
  ta: ta,
  id:id
 },
 success:function(data){
  <!--alert(data)-->
  if (ta == '推薦'){
  t.text('不推薦')
  }else if (ta == '不推薦'){
  t.text('推薦')
  }else if(ta == '展示'){
  t.text('不展示')
  }else if (ta == '不展示'){
  t.text('展示')
  }
 },
 error:function(){
  alert('請求失敗')
 }
 })
 })
 })
</script>

注意:

jqery中

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

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

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

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

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

可以在標簽中定義一個屬性動態(tài)生成值

<span id="num_{{ good.id }}"></span>

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

 <button onclick="addToCart({{ good.id }});">+</button>
 function addToCart(good_id){
 $('#num_'+ good_id).html(data.data.c_num)
 }

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

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

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

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

參數(shù):

url:必選規(guī)定將請求發(fā)送到哪個URL

data:可選。規(guī)定聯(lián)通請求發(fā)送到服務器的數(shù)據(jù)

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

額外參數(shù):

response - 包含后臺傳送回來的數(shù)據(jù)

status - 包含請求的狀態(tài)

xhr - 包含XMLHttpRequest對象

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

可能的類型:

xml html text script json jsonp

等價于

$.ajax({
 url: url,
 data: data,
 success: success,
 dataType: dataType
});

實例:

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

$.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,取決于返回值),添加一組請求參數(shù):

$.get("test.cgi", { name: "John", time: "2pm" },
 function(data){
 alert("Data Loaded: " + data);
 });

后端傳給前端

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

1、傳遞數(shù)據(jù)和html渲染,不進行復雜的數(shù)據(jù)處理

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

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

在html中使用{{ 鍵 }}來獲取數(shù)據(jù) --- {{ types }}

可以可迭代的數(shù)據(jù)進行迭代

{% for type in types %}

<p>type<p>

{% endfor %}

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

2、傳遞數(shù)據(jù)給js使用 --- 例如ajax請求

此時views視圖中的函數(shù)中的值要用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:請求成功時調用的函數(shù) status:描述狀態(tài)的字符串 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 發(fā)送ajax請求,后臺處理請求并返回status, result --- ajax的數(shù)據(jù)類型為定義為json,所以返回的數(shù)據(jù)也得是json,不然請求失敗(請求失敗不代表數(shù)據(jù)傳不到后臺,只是后臺的數(shù)據(jù)會返回失敗)

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

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

相關文章

  • Unicode和Python的中文處理

    Unicode和Python的中文處理

    在Python語言中,Uincode字符串處理一直是一個容易讓人迷惑的問題。許多Python愛好者經常因為搞不清Unicode、UTF-8還有其它許許多多的編碼之間的區(qū)別而大傷腦筋。本文將介紹Unicode和Python的中文處理的相關知識。下面跟著小編一起來看下吧
    2017-03-03
  • 利用Python實現(xiàn)批量裁剪圖片

    利用Python實現(xiàn)批量裁剪圖片

    這篇文章主要為大家詳細介紹了如何基于Python如何批量裁剪圖片并保存,文中的示例代碼講解詳細,具有一定的參考價值,有需要的小伙伴可以了解一下
    2023-10-10
  • Pandas中DataFrame的基本操作之重新索引講解

    Pandas中DataFrame的基本操作之重新索引講解

    這篇文章主要介紹了Pandas中DataFrame的基本操作之重新索引,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • 解決安裝pycharm后不能執(zhí)行python腳本的問題

    解決安裝pycharm后不能執(zhí)行python腳本的問題

    今天小編就為大家分享一篇解決安裝pycharm后不能執(zhí)行python腳本的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • pytest接口自動化測試框架搭建的全過程

    pytest接口自動化測試框架搭建的全過程

    pytest是Python的一種單元測試框架,可用來組織用例執(zhí)行,用例斷言,下面這篇文章主要給大家介紹了關于pytest接口自動化測試框架搭建的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-07-07
  • python實現(xiàn)逆波蘭計算表達式實例詳解

    python實現(xiàn)逆波蘭計算表達式實例詳解

    這篇文章主要介紹了python實現(xiàn)逆波蘭計算表達式的方法,較為詳細的分析了逆波蘭表達式的概念及實現(xiàn)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-05-05
  • pandas計算相關系數(shù)corr返回空的問題解決

    pandas計算相關系數(shù)corr返回空的問題解決

    本文主要介紹了pandas計算相關系數(shù)corr返回空的問題解決,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-01-01
  • python代碼 if not x: 和 if x is not None: 和 if not x is None:使用介紹

    python代碼 if not x: 和 if x is not None: 和 if not x is None:使用

    這篇文章主要介紹了python代碼 if not x: 和 if x is not None: 和 if not x is None:使用介紹,需要的朋友可以參考下
    2016-09-09
  • Python Numpy教程之排序,搜索和計數(shù)詳解

    Python Numpy教程之排序,搜索和計數(shù)詳解

    這篇文章主要為大家詳細介紹了Python?NumPy中排序,搜索和計數(shù)的實現(xiàn),文中的示例代碼講解詳細,對我們學習Python有一定幫助,需要的可以參考一下
    2022-08-08
  • Python實現(xiàn)批量翻譯CAD圖紙

    Python實現(xiàn)批量翻譯CAD圖紙

    這篇文章主要為大家詳細介紹了如何通過Python實現(xiàn)批量翻譯CAD圖紙,文中的示例代碼講解詳細,具有一定的借鑒價值,感興趣的小伙伴可以學習一下
    2023-12-12

最新評論

崇义县| 德州市| 乌兰浩特市| 利津县| 垣曲县| 明溪县| 社旗县| 柳州市| 定襄县| 沧源| 孟村| 洛南县| 台南市| 安阳县| 成安县| 东城区| 六枝特区| 茂名市| 青龙| 乡城县| 饶河县| 沁源县| 宜兰市| 灯塔市| 赫章县| 永清县| 潼南县| 荣成市| 黄梅县| 镇康县| 民乐县| 徐闻县| 青铜峡市| 建德市| 克拉玛依市| 乌鲁木齐县| 鄂伦春自治旗| 芒康县| 崇义县| 韶山市| 资阳市|