저는 Python과 Flask를 처음 사용하고 Response.redirect
있으며 C #에서 와 같은 작업을 수행하려고합니다 . 즉, 특정 URL로 리디렉션-어떻게해야합니까?
내 코드는 다음과 같습니다.
import os
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
return 'Hello World!'
if __name__ == '__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 __name__ == '__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)
플라스크 문서에 대한 설명서를 참조하십시오 . 코드의 기본값은 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 __name__ == '__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)
답변
로부터 플라스크 API 문서 (V 0.10.) :
플라스크. 리디렉션 (
location
,code=302
,Response=None
)호출 된 경우 클라이언트를 대상 위치로 리디렉션하는 응답 오브젝트 (WSGI 애플리케이션)를 리턴합니다. 지원되는 코드는 301, 302, 303, 305 및 307입니다. 300은 실제 리디렉션이 아니기 때문에 지원되지 않으며 304는 If-Modified-Since 헤더가 정의 된 요청의 요청에 대한 답변이므로 304가 지원되지 않습니다.
버전 0.6의 새로운 기능 : 이제 위치는 iri_to_uri () 함수를 사용하여 인코딩 된 유니 코드 문자열이 될 수 있습니다.
매개 변수 :
location
– 응답이 리디렉션 될 위치.code
– 리디렉션 상태 코드. 기본값은 302입니다.Response
(class) – 응답을 인스턴스화 할 때 사용할 응답 클래스입니다. 기본값은 werkzeug.wrappers. 지정되지 않은 경우 응답합니다.
답변
나는이 질문에 업데이트 될 가치가 있다고 생각합니다 : 다른 접근법을 살펴보고 비교하십시오.
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 __name__ == "__main__":
app.run(host="0.0.0.0",port=8000,debug=True)
답변
답변
플라스크에는 redirect
모든 URL로 리디렉션 하는 기능이 포함되어 있습니다. 또한 다음과 같은 오류 코드로 요청을 일찍 중단 할 수 있습니다 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
포함 된 기능을 사용할 수 있습니다flask
from flask import Flask, redirect
app = Flask(__name__)
@app.route('/')
def hello():
return redirect("www.exampleURL.com", code = 302)
if __name__ == "__main__":
app.run()
또 다른 유용한 팁 (플라스크를 처음 사용하는 경우) app.debug = True
은 디버거 출력이 잘못된 점을 파악하는 데 많은 도움이되므로 플라스크 객체를 초기화 한 후 추가 하는 것입니다.