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.