电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

淺談Django前端后端值傳遞問(wèn)題

瀏覽:2日期:2024-09-25 11:05:53

前端后端傳值問(wèn)題總結(jié)

前端傳給后端

通過(guò)表單傳值

1、通過(guò)表單get請(qǐng)求傳值

在前端當(dāng)通過(guò)get的方式傳值時(shí),表單中的標(biāo)簽的name值將會(huì)被當(dāng)做action的地址的參數(shù)

此時(shí),在后端可以通過(guò)get請(qǐng)求相應(yīng)的name值拿到對(duì)應(yīng)的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' placeholder='輸入要查詢的文章標(biāo)題'/> <input type='submit' value='查詢' /> </section> </form>

視圖中:

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

拿到的值可以存入session中,在前端可以通過(guò){{ request.session[que] }}拿到對(duì)應(yīng)的值

<a href='http://www.hdgsjgj.cn/bcjs/{% url ’backweb:select_art’ %}?page={{ page.paginator.num_pages }}&que={{ request.session.que }}' rel='external nofollow' >最后一頁(yè)</a>

2、表單通過(guò)post請(qǐng)求傳值

當(dāng)前端通過(guò)post傳值時(shí),在視圖中可以通過(guò)POST請(qǐng)求拿到對(duì)應(yīng)的表單中的name屬性對(duì)應(yīng)的value值

通過(guò)ajax傳值

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

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

注意:如果前端的dataType是json格式,后端的返回?cái)?shù)據(jù)應(yīng)該也是json格式,否則會(huì)請(qǐng)求不成功(但是可以接收前端ajax傳輸過(guò)來(lái)的值)。

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

resp = ’請(qǐng)求成功re’

return HttpResponse(json.dumps(resp))

或者

return JsonResponse(data)

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

html頁(yè)面:

<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(’請(qǐng)求失敗’) } }) }) })</script>

注意:

jqery中

如果事件綁定了多個(gè)標(biāo)簽,想要知道點(diǎn)擊的標(biāo)簽可以使用$(this)獲得。

通過(guò)標(biāo)簽對(duì)象.text()可以獲得標(biāo)簽中的值。

通過(guò)標(biāo)簽對(duì)象.val()可以獲得標(biāo)簽的value值(例如在表單中的值)

通過(guò)標(biāo)簽對(duì)象.attr(標(biāo)簽屬性名)可以獲得標(biāo)簽屬性對(duì)應(yīng)的值

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

可以在標(biāo)簽中定義一個(gè)屬性動(dòng)態(tài)生成值

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

此時(shí)可以在綁定的時(shí)間函數(shù)中傳入一個(gè)同樣的參數(shù),就可以在js中獲取當(dāng)前的被點(diǎn)擊的標(biāo)簽

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

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

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

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

這是一個(gè)簡(jiǎn)寫的GET請(qǐng)求功能

參數(shù):

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

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

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

額外參數(shù):

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

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

xhr - 包含XMLHttpRequest對(duì)象

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

可能的類型:

xml html text script json jsonp

等價(jià)于

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

實(shí)例:

1、請(qǐng)求test.php網(wǎng)頁(yè),傳送兩個(gè)參數(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,取決于返回值),添加一組請(qǐng)求參數(shù):

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

后端傳給前端

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

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

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

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

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

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

{% for type in types %}

<p>type<p>

{% endfor %}

也可以進(jìn)行{% if %} {% else %}操作,注意格式:必須有結(jié)尾{% endif %}

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

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

import jsonfrom django.shortcuts import render def main_page(request): list = [’view’, ’Json’, ’JS’] return render(request, ’index.html’, { ’List’: json.dumps(list), })

在前js中使用時(shí)需要加safe過(guò)濾器 --- 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:請(qǐng)求成功時(shí)調(diào)用的函數(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請(qǐng)求,后臺(tái)處理請(qǐng)求并返回status, result --- ajax的數(shù)據(jù)類型為定義為json,所以返回的數(shù)據(jù)也得是json,不然請(qǐng)求失敗(請(qǐng)求失敗不代表數(shù)據(jù)傳不到后臺(tái),只是后臺(tái)的數(shù)據(jù)會(huì)返回失敗)

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

以上這篇淺談Django前端后端值傳遞問(wèn)題就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Django
相關(guān)文章:
主站蜘蛛池模板: 聚合氯化铝-碱式氯化铝-聚合硫酸铁-聚氯化铝铁生产厂家多少钱一吨-聚丙烯酰胺价格_河南浩博净水材料有限公司 | 舞台木地板厂家_体育运动木地板_室内篮球馆木地板_实木运动地板厂家_欧氏篮球地板推荐 | 彩超机-黑白B超机-便携兽用B超机-多普勒彩超机价格「大为彩超」厂家 | 采暖炉_取暖炉_生物质颗粒锅炉_颗粒壁炉_厂家加盟批发_烟台蓝澳采暖设备有限公司 | 智能门锁电机_智能门锁离合器_智能门锁电机厂家-温州劲力智能科技有限公司 | 818手游网_提供当下热门APP手游_最新手机游戏下载 | 碎石机设备-欧版反击破-欧版颚式破碎机(站)厂家_山东奥凯诺机械 高低温试验箱-模拟高低温试验箱订制-北京普桑达仪器科技有限公司【官网】 | 美缝剂_美缝剂厂家_美缝剂加盟-地老板高端瓷砖美缝剂 | 工业机械三维动画制作 环保设备原理三维演示动画 自动化装配产线三维动画制作公司-南京燃动数字 聚合氯化铝_喷雾聚氯化铝_聚合氯化铝铁厂家_郑州亿升化工有限公司 | 粒米特测控技术(上海)有限公司-测功机_减速机测试台_电机测试台 | 体检车_移动CT车_CT检查车_CT车_深圳市艾克瑞电气有限公司移动CT体检车厂家-深圳市艾克瑞电气有限公司 | 组织研磨机-高通量组织研磨仪-实验室多样品组织研磨机-东方天净 传递窗_超净|洁净工作台_高效过滤器-传递窗厂家广州梓净公司 | 牛奶检测仪-乳成分分析仪-北京海谊| 成都软件开发_OA|ERP|CRM|管理系统定制开发_成都码邻蜀科技 | 板式换网器_柱式换网器_自动换网器-郑州海科熔体泵有限公司 | 新型游乐设备,360大摆锤游乐设备「诚信厂家」-山东方鑫游乐设备 新能源汽车电池软连接,铜铝复合膜柔性连接,电力母排-容发智能科技(无锡)有限公司 | 耐火浇注料价格-高强高铝-刚玉碳化硅耐磨浇注料厂家【直销】 | 国产液相色谱仪-超高效液相色谱仪厂家-上海伍丰科学仪器有限公司 | 深圳侦探联系方式_深圳小三调查取证公司_深圳小三分离机构 | 美的商用净水器_美的直饮机_一级代理经销商_Midea租赁价格-厂家反渗透滤芯-直饮水批发品牌售后 | 安徽合肥格力空调专卖店_格力中央空调_格力空调总经销公司代理-皖格制冷设备 | 尾轮组_头轮组_矿用刮板_厢式刮板机_铸石刮板机厂家-双驰机械 | 济南品牌包装设计公司_济南VI标志设计公司_山东锐尚文化传播 | 滚筒线,链板线,总装线,流水线-上海体能机电有限公司 | 自动螺旋上料机厂家价格-斗式提升机定制-螺杆绞龙输送机-杰凯上料机 | 北京发电机出租_发电机租赁_北京发电机维修 - 河北腾伦发电机出租 | 学叉车培训|叉车证报名|叉车查询|叉车证怎么考-工程机械培训网 | 高压无油空压机_无油水润滑空压机_水润滑无油螺杆空压机_无油空压机厂家-科普柯超滤(广东)节能科技有限公司 | 集装箱箱号识别_自重载重图像识别_铁路车号自动识别_OCR图像识别 | 刺绳_刀片刺网_刺丝滚笼_不锈钢刺绳生产厂家_安平县浩荣金属丝网制品有限公司-安平县浩荣金属丝网制品有限公司 | 碳化硅,氮化硅,冰晶石,绢云母,氟化铝,白刚玉,棕刚玉,石墨,铝粉,铁粉,金属硅粉,金属铝粉,氧化铝粉,硅微粉,蓝晶石,红柱石,莫来石,粉煤灰,三聚磷酸钠,六偏磷酸钠,硫酸镁-皓泉新材料 | 永嘉县奥阳陶瓷阀门有限公司 | 工业风机_环保空调_冷风机_工厂车间厂房通风降温设备旺成服务平台 | led冷热冲击试验箱_LED高低温冲击试验箱_老化试验箱-爱佩百科 | 异噻唑啉酮-均三嗪-三丹油-1227-中北杀菌剂厂家 | 气胀轴|气涨轴|安全夹头|安全卡盘|伺服纠偏系统厂家-天机传动 | 广东恩亿梯电源有限公司【官网】_UPS不间断电源|EPS应急电源|模块化机房|电动汽车充电桩_UPS电源厂家(恩亿梯UPS电源,UPS不间断电源,不间断电源UPS) | 西门子伺服电机维修,西门子电源模块维修,西门子驱动模块维修-上海渠利 | 重庆波纹管|重庆钢带管|重庆塑钢管|重庆联进管道有限公司 | 恒压供水控制柜|无负压|一体化泵站控制柜|PLC远程调试|MCGS触摸屏|自动控制方案-联致自控设备 | 科研ELISA试剂盒,酶联免疫检测试剂盒,昆虫_植物ELISA酶免试剂盒-上海仁捷生物科技有限公司 |