Перенаправление на URL-адрес в колбу
Я новичок в Python и Flask, и я пытаюсь сделать эквивалент Response.redirect а в C# - ie: перенаправление на определенный 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)
5 ответов:
вы должны вернуть редирект
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)см. [документация по Flask docs]( http://flask.pocoo.org/docs/1.0/api/#flask.redirect) значение по умолчанию для кода равно 302 so
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)посмотри пример в документации.
С Flask API Documentation (v. 0.10):
фляга.редирект(
location,code=302,Response=None)возвращает объект ответа (приложение WSGI), который при вызове перенаправляет клиента в целевое расположение. Поддерживаемые коды 301, 302, 303, 305 и 307. 300 не поддерживается, потому что это не реальное перенаправление и 304, потому что это ответ на запрос с запросом с определенным If-Modified-Since заголовки.
новое в версии 0.6: расположение теперь может быть строкой Юникода, которая является кодируется с помощью функции iri_to_uri ().
параметры:
location- место, куда должен перенаправляться ответ.code– код статуса системы. по умолчанию 302.Response(класс) – класс ответа, используемый при создании экземпляра ответа. Значение по умолчанию-сверла.обертки.Ответ если неопределенный.
Я считаю, что этот вопрос заслуживает обновленный: просто взгляните на другие подходы и сделать сравнения.
вот как вы делаете перенаправление (3xx) с одного url на другой в колбе (0.12.2):
#!/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)для других официальных ссылок здесь.
flask.redirect(location, code=302)документы можно найти здесь.
Comments