【フラスコ】リクエスト

リクエストメソッド

フラスコデフォルトの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ヘッダフォームまたはデータを含みません

おすすめ

転載: www.cnblogs.com/youxiu123/p/11605772.html