参考:「フラスコのウェブ開発。」
グローバル変数のフラスココンテキスト
一時的に使用特定のオブジェクトのフラスココンテキストは、グローバルにアクセス可能になります。:フラスコに2つのコンテキストがあるアプリケーション・コンテキストと要求コンテキストが。
変数名 | コンテキスト | 説明 |
---|---|---|
CURRENT_APP | アプリケーション・コンテキスト | 現在のアプリケーションの応用例 |
グラム | アプリケーション・コンテキスト | 処理要求は、各要求は、オブジェクトをリセットするための一時記憶としてのオブジェクト |
要求 | 要求コンテキスト | クライアントによって送信されたHTTPリクエストのRequestオブジェクトカプセル化コンテンツ |
セッション | 要求コンテキスト | ユーザーセッションは、辞書には、ストレージ要求値との間で「記憶」することが必要です |
リクエストオブジェクト
コンテキスト変数開放要求オブジェクトによってフラスコ要求は、このオブジェクトは、すべてのクライアントから送信されたHTTPリクエストの情報が含まれています。共通の属性とメソッドがあります。
プロパティまたはメソッド | 説明 |
---|---|
形 | 辞書、提出ストア要求にすべてのフォームフィールド(ポストリクエスト) |
引数 | 渡されたURLのクエリ文字列を格納するための辞書のすべてのパラメータ(リクエストを取得) |
値 | 辞書は、コレクションとargsを形成します |
クッキー | すべてのクッキー辞書、ストレージ要求 |
ヘッダ | すべてのHTTPヘッダ辞書、ストレージ要求 |
ファイル | 辞書には、アップロードしたすべてのファイルには、要求を保存します |
get_data() | 緩衝体に要求されたデータを返します。 |
get_json() | これは、体を得るための要求を解析備え、辞書を返すJSON |
設計図 | 処理要求の青写真のフラスコ名 |
終点 | エンドポイント・ルーティングの名前として要求フラスコビュー関数名を処理するエンドポイントの名前 |
方法 | 例えばGETまたはPOSTのようなHTTPリクエストの方法 |
スキーム | URLメソッド(HTTPまたはHTTPS) |
ts_secure | セキュアな接続を介して真の送信要求を返します(HTTPS)(注:これは、元の本方法で、エラー) |
ホスト | 要求定義のホスト名、ポート番号を含むことができます |
道 | URLのパス部分 |
クエリ文字列 | URLのクエリ文字列部分は、元のバイナリ値に戻ります |
フルパス | URLとクエリ文字列セクションのパス |
URL | 完全なURLは、クライアントから要求されました |
BASE_URL | URL、ないクエリ文字列セクションでは |
REMOTE_ADDR | クライアントのIPアドレス |
およそ | 元の要求辞書のWSGI環境 |
コードは示してい
from flask import Flask, request
app = Flask(__name__)
@app.route('/index/', methods=['GET', 'POST'])
def index():
if request.method == 'POST': # post参数{'name': 'flask'}
print(request.form.get('name')) # flask
return 'post succeed'
elif request.method == 'GET': # 以url http://127.0.0.1:5000/index/?name=flask 为例
print(request.args.get('name')) # flask
print(request.values.get('name')) # flask
print(request.cookies) # {}
print(request.headers.get('User-Agent')) # Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:70.0) Gecko/20100101 Firefox/70.0
print(request.get_data()) # b''
print(request.get_json()) # None
print(request.blueprint) # None
print(request.endpoint) # index
print(request.scheme) # http
print(request.is_secure) # False
print(request.host) # 127.0.0.1:5000
print(request.path) # /index/
print(request.query_string) # b'name=flask'
print(request.full_path) # /index/?name=flask
print(request.url) # http://127.0.0.1:5000/index/?name=flask
print(request.base_url) # http://127.0.0.1:5000/index/
print(request.remote_addr) # 127.0.0.1
print(request.environ)
return 'get succeed'
if __name__ == '__main__':
app.run(debug=True)
レスポンスオブジェクト
一般的な応答:
return "字符串"
return render_template # 返回模板
return redirect()
あなたは、値のいくつかのタプルを返すようにしたくない場合は、ビューmake_response機能で使用することができる()関数は、レスポンスオブジェクトを返します。
一般的なレスポンスオブジェクトのプロパティとメソッドは以下のとおりです。
プロパティまたはメソッド | 説明 |
---|---|
STATUS_CODE | デジタルHTTPステータスコード |
ヘッダ | 辞書のようなオブジェクトに送信されるすべての応答ヘッダを含ま |
set_cookie() | に応じて、クッキーを追加します。 |
delete_cookie() | クッキーを削除するには |
CONTENT_LENGTH | 本体の長さに応じて |
CONTENT_TYPE | ボディのメディアタイプ |
set_data() | に応じて設定された文字列またはバイトの値 |
get_data() | レスポンスボディをゲット |
そして、リダイレクトの特殊なタイプ。
from flask import Flask, request, make_response
app = Flask(__name__)
@app.route('/index/')
def index():
data = {
'msg': 'this document carries a cookie!'
}
response = make_response(data)
response.set_cookie('answer', '42')
response.headers['Content-Length'] = 100 # 默认为返回数据长度,可修改
response.headers['token'] = 'asd343asd' # 添加编辑header信息
print(request.cookies.get('answer')) # 第二次请求时会返回 42
return response
if __name__ == '__main__':
app.run(debug=True)