リクエストメソッド
フラスコデフォルトのGETリクエスト
それは我々が要求にページを取得する必要がある場合、彼らは要求をPOSTする必要があるので、我々はメソッドのメソッドをオーバーライドする必要があり、次のとおりです。
<!DOCTYPE HTML> <HTML LANG = "EN"> <HEAD> <メタ文字コード= "UTF-8"> <タイトル>タイトル</ TITLE> </ HEAD> <BODY> <フォームアクション= ""メソッド=」ポスト"> 用户名:の<input type =" text "> 密码:<入力タイプ="パスワード"> の<input type ="提出」値= "登录"> </ FORM> </ BODY> </ HTML>
フラスコインポートフラスコ、render_templateから アプリ=フラスコ(__ name__) app.route @( '/ログイン'、メソッド= [ "POST"は、 "GET"])#重写方法方法 デフ)(ログイン: リターンrender_template( "ログイン。 HTML ") であれば__name__ == '__main__': app.run(" 0.0.0.0" 、9876)
その他の方法
リクエスト内のフラスコは多くの属性を提供してくれ、単にインポート要求が直接あなたが直接効果を見ることができ、対応する属性を呼び出します
request.method
リクエスト内のフラスコは、フロントの道を尋ねることであるプロパティを保存するための方法を提供してくれます
フラスコインポートフラスコ、render_template、リクエストから アプリ=フラスコ(__ name__) app.route @( '/ログイン'、メソッド= [ "POST"、 "GET"]) デフログイン(): #获取前端的请求的方式 の印刷( request.method) リターンrender_template( "login.htmlと") の場合__name__ == '__main__': app.run( "0.0.0.0"、9876)
Request.Form
データ取得要求
フラスコインポートフラスコ、render_template、リクエストから アプリ=フラスコ(__ name__) app.route @( '/ログイン'、メソッド= [ "POST"、 "GET"]) )デフログイン(: request.method場合== "GET" : リターンrender_template( "login.htmlと") request.method == "POST"の場合: #获取フォーム表单提交的数据 プリント(のRequest.Form)#のImmutableMultiDict([( 'ユーザ名'、 'ヘンリー')、( 'パスワード」、 '123456')]) リターン"200 OK" であれば__name__ == '__main__': app.run( "0.0.0.0"、9876)
reqeust.formプロパティでログイン認証を行います
フラスコインポートフラスコ、render_template、リクエストから アプリ=フラスコ(__ name__) app.route @( '/ログイン'、メソッド= [ "POST"、 "GET"]) )デフログイン(: request.method場合== "GET" : リターンrender_template( "login.htmlと") request.method == "POST"の場合: #获取フォーム表单提交的数据 プリント(のRequest.Form)#のImmutableMultiDict([( 'ユーザ名'、 'ヘンリー')、( 'パスワード」、 '123456')]) 、ユーザ名= request.form.get( "ユーザ名") パスワード= request.form.get( "パスワード") 、ユーザ名== "ヘンリー"とパスワード== "123456"の場合: リターン「200 「OK 他: 戻る"404" の場合__name__ == '__main__': app.run( "0.0.0.0"、9876)
注意:私たちの辞書使用量のデータとのpythonのImmutableMultiDict型が同じです
私たちは、次のように()メソッドは、私たちの辞書で上記のpythonにこのデータ型を変換することができますto_dict
フラスコインポートフラスコ、render_template、リクエストから アプリ=フラスコ(__ name__) app.route @( '/ログイン'、メソッド= [ "POST"、 "GET"]) )デフログイン(: request.method場合== "GET" : リターンrender_template( "login.htmlと") request.method場合== "POST": #获取フォーム表单提交的数据 プリント(request.form.to_dict())#{ 'ユーザ名': 'ヘンリー'、 'パスワード' '123456'} ユーザ名= request.form.get( "ユーザ名") パスワード= request.form.get( "パスワード") であれば、ユーザー名== "ヘンリー"とパスワード== "123456": リターン"200 OK" 他: 戻る"404" の場合__name__ == '__main__': app.run( "0.0.0.0"、9876)
我々は、エラーを防止するために使用される辞書getメソッドの値をとります
request.headers
データリクエストヘッダを取得します
印刷(request.headers)
#Host:192.168.16.42:9876 #Connection:キープアライブ #1のContent-Length:27 #1のCache-Control:最大エージング= 0 #Origin:http://192.168.16.42:9876 #Upgrade -insecure-要求:1つの #のContent-Type:アプリケーション/ x-www-form-urlencodedで #1のUser-Agent:Mozillaの/ 5.0(Windows NTの10.0; Win64の、x64の)のAppleWebKit / 537.36(KHTML、ヤモリなど)クローム/ 75.0。 3770.100サファリ/ 537.36 #Accept:text / htmlの、アプリケーション/ XHTML + xmlの、アプリケーション/ XML、Q = 0.9、画像/ WEBP、画像/ APNG、* / *; Q = 0.8、アプリケーション/署名され交換; V = B3 #Referer:http://192.168.16.42:9876/login #受け入れ-エンコード:gzipで、収縮 #受け入れ-言語:ZH-CNを、ZH; Q = 0.9
request.args
URLパラメータは、要求をゲット
プリント(request.args) #1 ImmutableMultiDict([( '名前'、 'ヘンリー')、( '年齢'、'18で)]) #()to_dict することによって辞書に変換する方法 プリント(request.args.to_dict()) #{ '名前': 'ヘンリー '、 '年齢': '18'}
request.files
ファイルをアップロード
フロントページ
<!DOCTYPE HTML> <HTML LANG = "EN"> <HEAD> <メタ文字コード= "UTF-8"> <タイトル>タイトル</ TITLE> </ HEAD> <BODY> <フォームアクション= ""メソッド=」ポスト」にenctype = "multipart / form-データ"> 用户名:の<input type = "text"の名= "ユーザ名"> 密码:<入力タイプ= "パスワード"名前= "パスワード"> の<input type = "ファイル" NAME = "MY_FILE"> の<input type = "提出"値= "登录"> </ FORM> </ BODY> </ HTML>
バックエンドのコード
フラスコインポートフラスコ、render_template、リクエストから アプリ=フラスコ(__ name__) app.route @( '/ログイン'、メソッド= [ "POST"、 "GET"]) )デフログイン(: request.method場合== "GET" : リターンrender_template( "login.htmlと") request.method == "POST"の場合: ユーザ名= request.form.get( "ユーザ名") パスワード= request.form.get( "パスワード") であれば、ユーザー名==「ヘンリー「パスワード== "123456": プリント(request.files)#のImmutableMultiDict([( 'MY_FILE'、<がFileStorage: '点击事件の.gifをクリックして'( 'イメージ/ GIF')>)]) ファイル=のrequest.files .get( "MY_FILE")#ファイル是がFileStorage类型注意:ファイルハンドルされていないこれは、ファイルハンドルではありません .GIFプリント(files.filename)#クリッククリックイベント[ファイル名] files.save(files.filename)#1がFileStorageはの種類保存するためにSaveメソッドを呼び出して 「OK 200を」リターンを 、他: リターンを"404" IF __name__ == '__main__': app.run( "0.0.0.0"、9876)
1
|
fp
=
os.path.join(
"templates"
,files.filename)
# 通过os模块指定保存路径
|
他のプロパティの要求
印刷(request.url)#は、完全なアクセス・パスの取得 (request.path)#ルーティングアドレス/ログインプリント URLで印刷(request.values)#パラメータは、データでいるFormData得ることができます取得することができる (印刷(request.args.getを「ID」))#は、のURLのパラメータを取得する 印刷(request.args [「ID」] )#取得したURLのパラメータ (request.args.to_dict())#を取得、変換、印刷辞書にURLのパラメータ の印刷(要求.environ)#元の情報取得要求 印刷(request.base_url)#取得URLヘッダは、パラメータを含みません
二つの特別な属性
プリント(request.json)#要求ヘッダーコンテンツタイプ:アプリケーション/ JSONのシリアル化データrequest.jsonの 要求の印刷(request.data)#のContent-Typeヘッダフォームまたはデータを含みません