Frasco - Regras Variáveis

É possível construir um URL dinamicamente, adicionando partes variáveis ​​ao parâmetro da regra. Esta parte variável é marcada como<variable-name>. Ele é passado como um argumento de palavra-chave para a função com a qual a regra está associada.

No exemplo a seguir, o parâmetro de regra de route() decorador contém <name> parte variável anexada ao URL ‘/hello’. Portanto, se ohttp://localhost:5000/hello/TutorialsPoint é inserido como um URL no navegador, ‘TutorialPoint’ será fornecido para hello() funcionar como argumento.

from flask import Flask
app = Flask(__name__)

@app.route('/hello/<name>')
def hello_name(name):
   return 'Hello %s!' % name

if __name__ == '__main__':
   app.run(debug = True)

Salve o script acima como hello.pye executá-lo a partir do shell Python. Em seguida, abra o navegador e digite o URLhttp://localhost:5000/hello/TutorialsPoint.

A seguinte saída será exibida no navegador.

Hello TutorialsPoint!

Além da parte variável da string padrão, as regras podem ser construídas usando os seguintes conversores -

Sr. Não. Conversores e descrição
1

int

aceita inteiros

2

float

Para valor de ponto flutuante

3

path

aceita barras usadas como caractere separador de diretório

No código a seguir, todos esses construtores são usados.

from flask import Flask
app = Flask(__name__)

@app.route('/blog/<int:postID>')
def show_blog(postID):
   return 'Blog Number %d' % postID

@app.route('/rev/<float:revNo>')
def revision(revNo):
   return 'Revision Number %f' % revNo

if __name__ == '__main__':
   app.run()

Execute o código acima do Python Shell. Visite o URLhttp://localhost:5000/blog/11 no navegador.

O número fornecido é usado como argumento para o show_blog()função. O navegador exibe a seguinte saída -

Blog Number 11

Insira este URL no navegador - http://localhost:5000/rev/1.1

o revision()função assume o número de ponto flutuante como argumento. O seguinte resultado aparece na janela do navegador -

Revision Number 1.100000

As regras de URL do Flask são baseadas em Werkzeug’smódulo de roteamento. Isso garante que os URLs formados sejam únicos e baseados em precedentes estabelecidos pelo Apache.

Considere as regras definidas no seguinte script -

from flask import Flask
app = Flask(__name__)

@app.route('/flask')
def hello_flask():
   return 'Hello Flask'

@app.route('/python/')
def hello_python():
   return 'Hello Python'

if __name__ == '__main__':
   app.run()

Ambas as regras parecem semelhantes, mas na segunda regra, barra final (/)é usado. Como resultado, ele se torna um URL canônico. Portanto, usando/python ou /python/retorna a mesma saída. No entanto, no caso da primeira regra,/flask/ Resultados de URL em 404 Not Found página.