request对象常用方法详解:从参数获取到表单数据处理技巧
鈥?strong>鈥嬧€滃搸锛佷负浠€涔堟垜鍐欑殑琛ㄥ崟鏁版嵁鎬绘槸鎷夸笉鍒帮紵鈥濃€?/strong>鈥?br/> 浣犳槸涓嶆槸涔熼亣鍒拌繃杩欑鎶撶媯鐨勯棶棰橈紵鍒厡锛佷粖澶╁挶浠氨鐢ㄥぇ鐧借瘽锛屾妸鈥?strong>鈥媟equest瀵硅薄鈥?/strong>鈥嬭繖涓€滃伐鍏蜂汉鈥濈殑鐢ㄦ硶鎷嗗紑鎻夌锛屼繚璇佷綘鍚畬鑳界瑧鐫€鏁蹭唬鐮侊紒
涓€銆佸厛鎼炴噦锛歳equest瀵硅薄鍒板簳鏄釜鍟ワ紵 馃
鈥?strong>鈥嬩妇涓牀瀛愨€?/strong>鈥嬸煂帮細鍋囪浣犲紑浜嗗濂惰尪搴楋紝椤惧涓嬪崟鏃惰瑕佲€滃皯绯栧鍐扳€濓紝搴楀憳锛堟湇鍔″櫒锛夊緱鍏堝惉鎳傞渶姹傦紙璇锋眰锛夋墠鑳藉仛濂惰尪锛堝搷搴旓級銆傝€屸€?strong>鈥媟equest瀵硅薄灏辨槸閭d釜甯綘鏀堕泦椤惧闇€姹傜殑宸ュ叿鈥?/strong>鈥嬶紒
鉁?鈥?strong>鈥嬬畝鍗曠矖鏆寸殑瀹氫箟鈥?/strong>鈥嬶細
- 鐢ㄦ埛閫氳繃娴忚鍣ㄥ彂璇锋眰锛堟瘮濡傜偣鎸夐挳銆佸~琛ㄥ崟锛夋椂锛屸€?strong>鈥媟equest瀵硅薄浼氬府浣犳墦鍖呮墍鏈夎姹備俊鎭€?/strong>鈥嬶紝姣斿鍙傛暟銆佽姹傛柟寮忋€佷笂浼犵殑鏂囦欢绛夈€?/li>
- 绋嬪簭鍛樺彧瑕佲€滄媶鍖呰9鈥濆氨鑳芥嬁鍒伴渶瑕佺殑鏁版嵁锛屼笉鐢ㄨ嚜宸遍€犺疆瀛愶紒
浜屻€佸弬鏁拌幏鍙栵細鍒啀涔辩寽鐢ㄦ埛浼犱簡鍟ワ紒 馃暤锔?/h2>
鈥?strong>鈥嬪満鏅€?/strong>鈥嬶細鐢ㄦ埛閫氳繃URL鎴栬€呰〃鍗曟彁浜や簡鏁版嵁锛屼綘鎬庝箞鎷垮埌锛?/p>
1. GET璇锋眰鍙傛暟锛氫粠URL閲屸€滄姞鈥濇暟鎹?馃攳
姣斿鐢ㄦ埛璁块棶锛?code>https://xxx.com?name=寮犱笁&age=18
python澶嶅埗# Python Flask绀轰緥 name = request.args.get('name') # 鎷垮埌鈥滃紶涓夆€? age = request.args.get('age') # 鎷垮埌鈥?8鈥?
鈥?strong>鈥嬧殸锔?閬垮潙鎻愰啋鈥?/strong>鈥嬶細
- 鐢?code>request.args.get('鍙傛暟鍚?)锛屽埆鎷奸敊鍗曡瘝锛?/li>
- 濡傛灉鍙傛暟涓嶅瓨鍦紝榛樿杩斿洖
None
锛屽缓璁缃粯璁ゅ€硷細request.args.get('age', 20)
2. POST璇锋眰鍙傛暟锛氳〃鍗曟暟鎹殑姝g‘鎵撳紑鏂瑰紡 馃摑
鈥?strong>鈥嬬粡鍏哥炕杞︾幇鍦衡€?/strong>鈥嬶細鏂版墜鐩存帴request.form['username']
鎶ラ敊锛屽洜涓烘病璁剧疆璇锋眰缂栫爜锛?br/>
鈥?strong>鈥嬫纭搷浣溾€?/strong>鈥嬶細
python澶嶅埗# 鍏堢‘淇濈紪鐮佹纭紙姣斿澶勭悊涓枃锛? request.form = request.form.to_dict() # 杞垚瀛楀吀 username = request.form.get('username') password = request.form.get('password')
鉁?鈥?strong>鈥嬫墿灞曟妧宸р€?/strong>鈥嬶細
- 鐢?code>get()鏂规硶姣旂洿鎺ュ彇鏇村畨鍏紝閬垮厤KeyError宕╂簝锛?/li>
- 涓婁紶鏂囦欢锛熷悗闈細璁诧紒
涓夈€佽〃鍗曟暟鎹鐞嗭細韬插紑鏂版墜蹇呰俯鐨?涓潙 馃毇
鍧?锛氬繕璁板尯鍒咷ET鍜孭OST
鈥?strong>鈥嬬敤鎴锋晠浜嬧€?/strong>鈥嬶細灏忕帇鍐欎簡涓櫥褰曢〉闈紝鐢℅ET浼犲瘑鐮侊紝缁撴灉URL閲屾槑鏂囨樉绀哄瘑鐮佲€︼紙鑰佹澘锛氫綘鏄庡ぉ涓嶇敤鏉ヤ簡锛?br/> 鈥?strong>鈥嬭В鍐虫柟娉曗€?/strong>鈥嬶細
python澶嶅埗if request.method == 'POST': # 澶勭悊鏁忔劅鏁版嵁 else: # 杩斿洖琛ㄥ崟椤甸潰
鍧?锛氭枃浠朵笂浼犱笉璁剧疆enctype
鈥?strong>鈥嬮敊璇ず鑼冣€?/strong>鈥嬶細
html杩愯澶嶅埗
鈥?strong>鈥嬫纭Э鍔库€?/strong>鈥嬶細
html杩愯澶嶅埗<form method="post" enctype="multipart/form-data"> <input type="file" name="file"> form>
浠g爜閲岀敤request.files.get('file')
灏辫兘鎷垮埌鏂囦欢瀵硅薄~
鍥涖€佺嫭瀹舵暟鎹細80%鏂版墜涓嶇煡閬撶殑闅愯棌鎶€宸?馃敟
鈥?strong>鈥嬫渚嬪疄娴嬧€?/strong>鈥嬶細鐢ㄤ笉鍚屾鏋讹紙Flask銆丏jango锛夋椂锛宺equest瀵硅薄鐨勬柟娉曞悕鏈夊樊寮傦紒
鍔熻兘 | Flask | Django |
---|---|---|
鑾峰彇GET鍙傛暟 | request.args.get() | request.GET.get() |
鑾峰彇POST鍙傛暟 | request.form.get() | request.POST.get() |
鑾峰彇鏂囦欢 | request.files.get() | request.FILES.get() |
鈥?strong>鈥嬩釜浜哄悙妲解€?/strong>鈥嬶細绗竴娆″垏妗嗘灦鏃讹紝鎴戝鐫€request.POST
鍜?code>request.form鎰d簡鍗婂ぉ鈥﹀師鏉ュ彧鏄崲涓┈鐢诧紒
浜斻€佺粓鏋佺伒榄傛嫹闂細浠€涔堟椂鍊欑敤request.json锛?馃挕
鈥?strong>鈥嬪満鏅€?/strong>鈥嬶細鐜板湪鍓嶇娴佽鐢ˋjax鍙戦€丣SON鏁版嵁锛屾瘮濡傦細
javascript澶嶅埗// 鍓嶇浠g爜 fetch('/api', { method: 'POST', headers: {'Content-Type': 'application/json'}, body: JSON.stringify({name: '寮犱笁'}) })
鈥?strong>鈥嬪悗绔鐞嗏€?/strong>鈥嬶細
python澶嶅埗data = request.get_json() # 鐩存帴鎷垮埌瀛楀吀{'name': '寮犱笁'}
鈥?strong>鈥嬧殸锔?閲嶇偣鈥?/strong>鈥嬶細蹇呴』纭鍓嶇璁剧疆浜?code>Content-Type: application/json锛屽惁鍒?code>request.json浼氳繑鍥濶one锛?/p>
鍏€佹渶鍚庤鐐瑰ぇ瀹炶瘽 馃檶
瀛︿簡杩欎箞澶氭柟娉曪紝鍏跺疄鏍稿績灏变竴鍙ヨ瘽锛氣€?strong>鈥媟equest瀵硅薄鏄府浣犲共鑴忔椿绱椿鐨勨€?/strong>鈥嬶紒涓嶇敤鑷繁瑙f瀽HTTP鍗忚澶达紝涓嶇敤澶勭悊瀛楄妭娴佽浆鎹紝鐩存帴鎷跨幇鎴愮殑鏁版嵁涓嶉鍚楋紵
鈥?strong>鈥嬬嫭瀹惰瑙b€?/strong>鈥嬶細
鏇剧粡鎴戜互涓衡€滀細鐢╮equest瀵硅薄=浼歐eb寮€鍙戔€濓紝鍚庢潵鍙戠幇鈥﹁繖鐜╂剰鍎垮叾瀹炲彧鏄啺灞变竴瑙掋€備絾鍙嶈繃鏉ユ兂锛屸€?strong>鈥嬭繛鏁版嵁閮芥嬁涓嶅埌锛岃繕鍐欏暐涓氬姟閫昏緫鍟婏紵鈥?/strong>鈥?鎵€浠ヤ粖澶╃殑鍐呭锛屽氨鏄府浣犳墦鐗㈠湴鍩虹殑绗竴姝ワ紒
鈥?strong>鈥嬩笅娆¢亣鍒伴棶棰橈紝鍏堢伒榄備笁闂€?/strong>鈥嬶細
- 璇锋眰鏄疓ET杩樻槸POST锛?/li>
- 鍙傛暟鍚嶆嫾瀵逛簡鍚楋紵
- 缂栫爜鍜屾牸寮忚缃簡鍚楋紵
淇濆噯浣犲皯鎺変竴鍗婂ご鍙戯紒锛堝埆闂垜鎬庝箞鐭ラ亾鐨勷煒級
锛堝畬锛?/p>
本文由嘻道妙招独家原创,未经允许,严禁转载