it-swarm-pt.tech

Redirecionando para URL no Flask

Eu sou novo em Python e Flask e estou tentando fazer o equivalente de Response.redirect como em C # - ou seja: redirecionar para uma URL específica - como faço para isso?

Aqui está o meu código:

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)
169
iJade

Você precisa retornar um redirecionamento:

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)

Veja a documentação em documentação do frasco. O valor padrão do código é 302, então code=302 pode ser omitido ou substituído por outro código de redirecionamento (um em 301, 302, 303, 305 e 307).

271
Xavier Combelle
#!/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)

Dê uma olhada no exemplo na documentação .

75
soerface

Do documentação da API do Flask (v. 0.10):

flask. redirect (locationname__, code=302, Response=None)

Retorna um objeto de resposta (um aplicativo WSGI) que, se chamado, redireciona o cliente para o local de destino. Os códigos suportados são 301, 302, 303, 305 e 307. 300 não é suportado porque não é um redirecionamento real e 304 porque é a resposta para uma solicitação com uma solicitação com cabeçalhos definidos If-Modified-Since.

Novo na versão 0.6 : A localização pode agora ser uma cadeia unicode que é codificada usando a função iri_to_uri ().

Parâmetros:

  • location- o local para o qual a resposta deve redirecionar.
  • code- o código de status do redirecionamento. O padrão é 302.
  • Response(class) - uma classe de resposta a ser usada ao instanciar uma resposta. O padrão é werkzeug.wrappers.Response, se não for especificado.
37
ford

Acredito que esta questão merece uma atualização: basta dar uma olhada nas outras abordagens e fazer as comparações.

Aqui está como você redireciona (3xx) de um URL para outro no Flask (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 __== "__main__":
    app.run(Host="0.0.0.0",port=8000,debug=True)

Para outras referências oficiais, aqui .

11
ivanleoncz
flask.redirect(location, code=302)

Documentos podem ser encontrados aqui .

4
der_fenix

Para isso, você pode simplesmente usar a função redirect incluída em flask

from flask import Flask, redirect

app = Flask(__name__)

@app.route('/')
def hello():
    return redirect("www.exampleURL.com")

if __== "__main__":
    app.run()

Outra dica útil (como você é novo no flask), é adicionar app.debug = True após inicializar o objeto flask, já que a saída do debugger ajuda muito ao descobrir o que está errado.

0
Manan Gouhari

O frasco inclui a função redirect para redirecionar para qualquer URL. Além disso, você pode cancelar uma solicitação com um código de erro com 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)

Por padrão, uma página de erro em preto e branco é mostrada para cada código de erro.

O método redirect usa por padrão o código 302. Uma lista de códigos de status http aqui .

0
yoelvis