Atualmente, meu aplicativo de balão consiste em um único test.py
arquivo com várias rotas e a main()
rota definida. Existe alguma maneira de criar um test2.py
arquivo que contenha rotas que não foram tratadas test.py
?
@app.route('/somepath')
def somehandler():
# Handler code here
Estou preocupado com a existência de muitas rotas test.py
e gostaria de fazê-las para que eu possa executar python test.py
, o que também selecionará as rotas test.py
como se fizessem parte do mesmo arquivo. Que mudanças eu tenho que fazer test.py
e / ou incluir test2.py
para que isso funcione?
Você pode usar um truque simples, que é a variável de aplicativo de frasco de importação do principal dentro de outro arquivo, como:
test-routes.py
e em seus arquivos principais, onde você declarou o aplicativo de balão, importe rotas de teste, como:
app.py
Funciona do meu lado.
fonte
__main__
refere-se ao seu arquivo de entrada, é isso!import test-routes
oapp.py
arquivo não pode estar no topo do arquivo. Ele travou o gunicorn, mas, depois de mover a importação para a parte inferior do arquivo, funcionou. "apenas garantindo que o módulo seja importado e estamos fazendo isso na parte inferior do arquivo"Eu gostaria de recomendar um frasco vazio no GitHub.
Ele fornece uma maneira fácil de entender o Blueprints , várias visualizações e extensões .
fonte
Dividir o aplicativo em plantas é uma ótima idéia. No entanto, se isso não for suficiente, e se você quiser dividir o próprio Blueprint em vários arquivos py, isso também é possível usando o sistema regular de importação de módulos Python e, em seguida, percorrendo todas as rotas importadas dos outros arquivos .
Eu criei um Gist com o código para fazer isso:
https://gist.github.com/Jaza/61f879f577bc9d06029e
Tanto quanto sei, esta é a única maneira viável de dividir um Blueprint no momento. Não é possível criar "sub-projetos" no Flask, embora haja um problema em aberto com muita discussão sobre isso:
https://github.com/mitsuhiko/flask/issues/593
Além disso, mesmo que fosse possível (e provavelmente seja possível usar alguns dos trechos desse segmento de problema), os sub-projetos podem ser muito restritivos para o seu caso de uso - por exemplo, se você não quiser todas as rotas em um submódulo para ter o mesmo sub-prefixo de URL.
fonte
Esta tarefa pode ser realizada sem blueprints e importações complicadas usando o Mapa de URL Centralizado
app.py
views.py
fonte