Redirecionamento de balão e erros

Neste artigo, você aprenderá sobre redirecionamentos do Flask e mecanismos de tratamento de erros e descobrirá maneiras eficazes de usar esses recursos em seus aplicativos da web .



Redirecionamentos de Frasco

Um redirecionamento é uma técnica usada no desenvolvimento da Web para enviar um usuário de um URL para outro.

Eles podem ser úteis em muitas situações, como enviar usuários para uma nova página depois de preencherem um formulário ou enviá-los para uma página de login, caso ainda não tenham feito login.

Você pode usar o recurso interno do Flask para criar redirecionamentos facilmente. Esse recurso usa o novo endereço da Web como uma entrada e envia uma mensagem ao navegador da Web do usuário instruindo-o a ir para o novo endereço.

O formato para o protótipo da função redirect() é o seguinte:

Flask.redirect(location, statuscode, response)

parâmetros da função redirect():

 

Parâmetros Visão geral
localização O parâmetro representa o endereço da web para o qual a resposta deve ser redirecionada.
código de status Ele é enviado para o cabeçalho do navegador da Web do cliente e é definido como 302 por padrão.
resposta O parâmetro de resposta é utilizado para criar e inicializar o objeto de resposta.

 

Os códigos de status padrão estão listados abaixo:

  • HTTP_300_MULTIPLE_CHOICES
  • HTTP_301_MOVED_PERMANENTLY
  • HTTP_302_FOUND
  • HTTP_303_SEE_OTHER
  • HTTP_304_NOT_MODIFIED
  • HTTP_305_USE_PROXY
  • HTTP_306_RESERVED
  • HTTP_307_TEMPORARY_REDIRECT

O código de status padrão atribuído a uma função de redirecionamento é 302, que corresponde ao status ' encontrado '.

No exemplo abaixo, se alguém não conseguir fazer login, a função redirect() será invocada para renderizar a página de login novamente.

from flask import Flask, session, redirect, render_template, request, make_response, url_for

app = Flask(__name__)

app.secret_key = 'mrexamples'

@app.route('/')

def index():

   if 'client_name' in session:

      client_name = session['client_name']

      password = session['pwd']

      if client_name and password:

         return f'{client_name} Your account is logged in.<br>' \

            "<b><a href = '/logout'>Log out your account here</a></b>"

      else:

         return redirect('/login')

   return "You are not logged in <br><a href = '/login'></b>" + \

      "Log in your account here</b></a>"

@app.route('/login', methods = ['GET', 'POST'])

def login():

   if request.method == 'POST':

      session['client_name'] = request.form['client_name']

      session['pwd'] = request.form['pwd']

      return redirect(url_for('index'))

   return '''

   <form action = "" method = "post">

      <p>Username*: <input type = text name = client_name /></p>

      <p>Password*: <input type = password name = pwd /></p>

      <p><input type = submit value = Login /></p>

   </form>

   '''

@app.route('/logout')

def logout():

   session.pop('client_name', None)

   session.pop('pwd', None)

   return redirect(url_for('index'))

if __name__ == '__main__':

   app.run(debug = True)

A classe Flask tem uma função conhecida como abort() que exibe um código de erro.

Flask.abort(code)

A seguir estão os parâmetros da função abort():

 

Erro de código Visão geral
400 Significa Pedido Inválido
401 não autenticado
403 Proibido
404 Não encontrado
406 Não aceitável
415 Tipo de mídia não compatível
429 Muitas solicitações

 

Temos que modificar a função login() no código acima.

Em vez de renderizar a página de login novamente, devemos chamar abort( 406 ) para apresentar a página 'Não aceitável'.

from flask import Flask, session, redirect, render_template, request, make_response, url_for,abort

app = Flask(__name__)

app.secret_key = 'mrexamples'

@app.route('/')

def index():

   if 'client_name' in session:

      client_name = session['client_name']

      password = session['pwd']

      if client_name and password:

         return f'{client_name} Your account is logged in.<br>' \

            "<b><a href = '/logout'>Log out your account here</a></b>"

      else:

         abort(406)

   return "You are not logged in <br><a href = '/login'></b>" + \

      "Log in your account here</b></a>"

@app.route('/login', methods = ['GET', 'POST'])

def login():

   if request.method == 'POST':

      session['client_name'] = request.form['client_name']

      session['pwd'] = request.form['pwd']

      return redirect(url_for('index'))

   return '''

   <form action = "" method = "post">

      <p>Username*: <input type = text name = client_name /></p>

      <p>Password*: <input type = password name = pwd /></p>

      <p><input type = submit value = Login /></p>

   </form>

   '''

@app.route('/logout')

def logout():

   session.pop('client_name', None)

   session.pop('pwd', None)

   return redirect(url_for('index'))

if __name__ == '__main__':

   app.run(debug = True)

Saída

Se você não escreveu nada nos campos de texto de nome de usuário e senha, depois de pressionar o botão de login, você receberá a resposta ' Não aceitável '.

Exemplo de Explicação

Escrevemos um programa Python usando Flask para criar um aplicativo da web que permite o login e logout do usuário.

Seguem os principais pontos do programa:

  1. Importamos as bibliotecas Flask necessárias e criamos um objeto de aplicativo usando Flask() .
  2. Atribuímos uma chave secreta para habilitar variáveis ​​de sessão que rastreiam o status de login do usuário.
  3. O decorador @app.route('/') especifica a rota principal para exibir uma mensagem com base no status de login do usuário.
  4. O decorador @app.route('/login') especifica a rota da página de login que manipula as solicitações GET e POST .
  5. O decorador @app.route('/logout') especifica a rota da página de logout que remove variáveis ​​de sessão e redireciona o usuário para a página principal.
  6. Quando o programa é executado como módulo principal, o aplicativo é executado no modo de depuração .
  7. Se o usuário não estiver logado e tentar acessar uma página que requer autenticação, o aplicativo exibirá uma página de erro 'Não aceitável' usando a função abort( 406 ) .

Onde usar?

Em geral, você pode usar recursos de redirecionamento Flask e tratamento de erros sempre que precisar rotear usuários para páginas diferentes ou lidar com erros e exceções em um aplicativo da web.

  • Você pode usar os redirecionamentos do Flask para enviar os usuários à página de login quando eles tentarem acessar uma rota protegida sem estar logado. Os recursos de tratamento de erros do Flask também podem exibir mensagens de erro quando as tentativas de login falham devido a credenciais incorretas ou outros problemas.
  • Você pode usar redirecionamentos de flask para exibir uma mensagem de sucesso ou redirecionar os usuários para uma página diferente depois de enviarem um formulário. Isso ajuda a evitar que os usuários reenviem acidentalmente o formulário se atualizarem a página.
  • Você pode usar os recursos de tratamento de erros do Flask para criar páginas de erro personalizadas que exibem mensagens úteis quando ocorrem erros, como um erro 404 de página não encontrada ou um erro 500 interno do servidor.
  • Você pode usar redirecionamentos flask para redirecionar os usuários para um endpoint ou URL diferente quando eles fizerem solicitações para determinados endpoints. Isso pode melhorar a organização e a estrutura das APIs.

Benefícios

Os recursos de redirecionamento do Flask e tratamento de erros fornecem vários benefícios importantes que podem ajudar a melhorar a experiência do usuário, aumentar a segurança e a estabilidade dos aplicativos da Web e simplificar o processo de desenvolvimento.

Aqui estão alguns dos principais benefícios:

  1. Os redirecionamentos do Flask ajudam a melhorar a experiência do usuário, garantindo que os usuários sejam redirecionados para a página ou rota correta quando executam determinadas ações no aplicativo da web. Isso pode evitar confusão e frustração que podem ocorrer quando os usuários não têm certeza de onde devem ir ou o que devem fazer.
  2. Os recursos de tratamento de erros do Flask tornam mais fácil para os desenvolvedores lidar com erros e exceções que ocorrem em seus aplicativos da web. Isso ajuda a melhorar a estabilidade e a confiabilidade do aplicativo, garantindo que os usuários não encontrem erros ou travamentos inesperados.
  3. Ao lidar com erros e exceções de maneira mais eficaz, os recursos de tratamento de erros do Flask podem ajudar a melhorar a segurança dos aplicativos da web. Isso ocorre porque erros e exceções às vezes podem revelar informações confidenciais sobre o aplicativo ou o servidor, que podem ser exploradas por agentes mal-intencionados.
  4. Os recursos de redirecionamento do Flask e tratamento de erros podem ajudar a simplificar o processo de desenvolvimento, fornecendo uma maneira mais eficiente de lidar com tarefas comuns, como redirecionar usuários e lidar com erros. Isso pode economizar tempo e esforço dos desenvolvedores, permitindo que eles se concentrem em outros aspectos do aplicativo.

Conclusão

Se você é um desenvolvedor, pode achar que o Flask é uma estrutura da Web útil que fornece vários recursos para simplificar o desenvolvimento da Web, incluindo redirecionamento e tratamento de erros. Com a função Flask redirect(), você pode facilmente direcionar os usuários para outras páginas, enquanto as funções integradas de tratamento de erros permitem lidar com erros HTTP como 404 – Não encontrado, 500 – Erro interno do servidor e muito mais.

Esses recursos ajudam a garantir que os usuários sejam direcionados para a página de erro correta se ocorrer um erro durante a navegação em um aplicativo da Web e que os usuários sejam redirecionados para a página apropriada após ações bem-sucedidas, como login ou registro. Flask é um framework web versátil que oferece muitos benefícios para desenvolvedores e é amplamente utilizado em projetos de desenvolvimento web.

Nós valorizamos o seu feedback.
+1
0
+1
0
+1
0
+1
0
+1
0
+1
0
+1
0

Assine a nossa newsletter
Digite seu e-mail para receber um resumo semanal de nossos melhores posts. Saber mais!
ícone