私はPythonとFlaskに不慣れで、C#のようにResponse.redirect
と同等のことをやろうとしています。
これが私のコードです:
import os
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
return 'Hello World!'
if __== '__main__':
# Bind to PORT if defined, otherwise default to 5000.
port = int(os.environ.get('PORT', 5000))
app.run(Host='0.0.0.0', port=port)
あなたはリダイレクトを返さなければなりません:
import os
from flask import Flask,redirect
app = Flask(__name__)
@app.route('/')
def hello():
return redirect("http://www.example.com", code=302)
if __== '__main__':
# Bind to PORT if defined, otherwise default to 5000.
port = int(os.environ.get('PORT', 5000))
app.run(Host='0.0.0.0', port=port)
flask docsのドキュメントを参照してください。 codeのデフォルト値は302なので、code=302
を省略するか、他のリダイレクトコードに置き換えることができます(301、302、 303、305、および307)。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os
from flask import Flask, redirect, url_for
app = Flask(__name__)
@app.route('/')
def hello():
return redirect(url_for('foo'))
@app.route('/foo')
def foo():
return 'Hello Foo!'
if __== '__main__':
# Bind to PORT if defined, otherwise default to 5000.
port = int(os.environ.get('PORT', 5000))
app.run(Host='0.0.0.0', port=port)
ドキュメントの の例を見てください 。
Flask APIドキュメント (v。0.10)より:
flask。リダイレクト(
location
、code=302
、Response=None
)応答オブジェクト(WSGIアプリケーション)を返します。これが呼び出された場合は、クライアントをターゲットの場所にリダイレクトします。サポートされているコードは301、302、303、305、および307です。300は実際のリダイレクトではないためサポートされていません。304は、定義されたIf-Modified-Sinceヘッダーを持つリクエストを含むリクエストに対する回答です。
バージョン0.6の新機能:場所は、iri_to_uri()関数を使ってエンコードされたUnicode文字列になることができます。
パラメーター:
location
- レスポンスのリダイレクト先の場所.code
- リダイレクトステータスコード。デフォルトは302です。Response
(class) - レスポンスをインスタンス化するときに使うResponseクラス。指定しない場合、デフォルトはwerkzeug.wrappers.Responseです。
私はこの質問が最新のものに値すると信じています:ただ他のアプローチを見て、比較をしてください。
Flask(0.12.2)で、あるURLから別のURLにリダイレクト(3xx)する方法は次のとおりです。
#!/usr/bin/env python
from flask import Flask, redirect
app = Flask(__name__)
@app.route("/")
def index():
return redirect('/you_were_redirected')
@app.route("/you_were_redirected")
def redirected():
return "You were redirected. Congrats :)!"
if __== "__main__":
app.run(Host="0.0.0.0",port=8000,debug=True)
その他の公式な参考文献については、 こちら 。
flask.redirect(location, code=302)
ドキュメントはこちら にあります 。
これには、redirect
に含まれているflask
関数を単に使用することができます。
from flask import Flask, redirect
app = Flask(__name__)
@app.route('/')
def hello():
return redirect("www.exampleURL.com")
if __== "__main__":
app.run()
もう1つの便利なヒント(flaskに慣れていない場合)は、デバッガの出力が何が問題なのかを突き止めながら役立つので、flaskオブジェクトを初期化した後にapp.debug = True
を追加することです。
Flaskには、任意のURLにリダイレクトするためのredirect
関数が含まれています。さらに、abort
を指定したエラーコードでリクエストを早期に中止することができます。
from flask import abort, Flask, redirect, url_for
app = Flask(__name__)
@app.route('/')
def hello():
return redirect(url_for('hello'))
@app.route('/hello'):
def world:
abort(401)
デフォルトでは、エラーコードごとに白黒のエラーページが表示されます。
redirect
メソッドはデフォルトでコード302を取ります。httpステータスコードのリスト はこちら 。