1. 主页 > 好文章

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杩愯澶嶅埗
method="post"> <input type="file"> form>

鈥?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瀵硅薄鐨勬柟娉曞悕鏈夊樊寮傦紒

鍔熻兘FlaskDjango
鑾峰彇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>鈥嬶細

  1. 璇锋眰鏄疓ET杩樻槸POST锛?/li>
  2. 鍙傛暟鍚嶆嫾瀵逛簡鍚楋紵
  3. 缂栫爜鍜屾牸寮忚缃簡鍚楋紵

淇濆噯浣犲皯鎺変竴鍗婂ご鍙戯紒锛堝埆闂垜鎬庝箞鐭ラ亾鐨勷煒級


锛堝畬锛?/p>

本文由嘻道妙招独家原创,未经允许,严禁转载