flask app flask project layout with blueprint bootstrap
Este tutorial explica como usar o Flask App, Flask Blueprint e Flask Bootstrap em um projeto Flask:
Neste tópico, vamos nos afastar um pouco do arquétipo do Flask-Appbuilder para construir nossa compreensão dos Flask Blueprints. Leia nosso tutorial sobre Flask, modelos e visualizações de Flask e Flask com bancos de dados como MongoDB, SQLite e MySQL. Estamos usando um projeto de exemplo chamado flaskTutorialApp.
No entanto, você também pode criar o projeto do zero usando o comando flask fab create-app. Este comando cria a estrutura necessária para um projeto Flask junto com um diretório de aplicativo com base no nome do aplicativo fornecido por você.
=> Veja a série de treinamento Flask para todos
Neste tutorial, explicamos sobre o Flask App, Flask Blueprint e Flask Bootstrap. Desenvolvemos nosso aplicativo Flask inicialmente com o scaffolding pré-existente fornecido pelo Flask-Appbuilder. Em seguida, criamos um Flask Blueprint chamado hello2. Por fim, descreveremos o conceito Flask Docker encaixando nosso aplicativo Flask.
O que você aprenderá:
Flask App
Flask App é outro nome para um aplicativo Flask. Se você observar o código escrito no arquivo __init__.py, verá que uma instância do Flask é criada e a variável é nomeada como app. A instância da classe Flask é o aplicativo Flask, que é a instância do aplicativo WSGI.
from flask import Flask app = Flask(__name__)
Flask Blueprint
O Flask Blueprint nos permite manter recursos relacionados juntos e ajuda em melhores práticas de desenvolvimento. Alguns dos benefícios do Flask Blueprints são os seguintes:
- Fácil organização de aplicativos em grande escala.
- Aumenta a capacidade de reutilização do código, registrando o mesmo Blueprint várias vezes.
- Um conjunto de operações é registrado e pode ser reproduzido posteriormente após registrar um blueprint.
Com o histórico acima fornecido no Flask Blueprint, podemos seguir em frente e projetar nosso primeiro Blueprint. Podemos pensar no Blueprint como um módulo também. Vamos criar um blueprint HelloWorld.
Todos os componentes, recursos e recursos de um blueprint são mantidos e organizados separadamente do outro código-fonte do aplicativo Flask. Isso significa que um Flask Blueprint pode ter suas visualizações, formulários, modelos, arquivos estáticos e modelos.
Você pode criar vários Blueprints do mesmo conjunto de recursos. No entanto, isso pode criar confusão e não é uma boa prática.
Crie arquivos e diretórios do Flask Blueprint
Vamos começar a criar um Flask Blueprint com o nome de hello2. Use o script fornecido a seguir para criar a estrutura de diretório após ativar seu ambiente virtual usando a fonte venv / bin / activate após ir para o diretório do aplicativo.
blueprint_name='hello2' mkdir '$blueprint_name' mkdir -p '$blueprint_name/templates/$blueprint_name' touch '$blueprint_name/templates/$blueprint_name/hello.html' mkdir '$blueprint_name/static/' touch '$blueprint_name/__init__.py' touch '$blueprint_name/views.py'
Queremos que nosso Blueprint hello2 tenha suas visualizações que iremos importar em seu __init__.py. Criamos um diretório separado para nosso Blueprint com modelos e diretórios estáticos para renderizar visualizações Flask e servir recursos estáticos, respectivamente.
Estrutura de diretório do Flask Blueprint
A estrutura do diretório para o Blueprint deve ser semelhante à mostrada abaixo. Use o comando tree para criar uma saída semelhante.
Create Flask Blueprint View
Agora vamos definir uma visão simples dentro de views.py. Abra hello2 / views.py e insira o snippet de código fornecido a seguir.
from flask import Blueprint, render_template hello2 = Blueprint( 'hello2', __name__, template_folder='templates', static_folder='static' ) @hello2.route('/hello2') def hello2_view(): greeting = 'Hello World 2' return render_template('hello2/hello.html', greeting=greeting)
Importamos a classe Blueprint e o método render_template. Em seguida, criamos um objeto Blueprint fornecendo os nomes do modelo e dos diretórios estáticos.
Em seguida, definimos uma rota, usando o decorador @ hello2.route, e um controlador com o nome hello2_view. Este controlador é uma função Python. Nesta função, atribuímos um valor a uma variável chamada saudação e então o passamos para o método render_template.
Criar modelo Flask Blueprint
Agora vamos criar o template hello.html. Se você leu nossos tutoriais anteriores, deve ter notado que o modelo tem o mesmo nome que criamos para rasgar a visualização HelloWorld. Para este Blueprint hello2, criamos um novo modelo estendendo o anterior.
Além disso, observe que usamos um caminho semântico hello2 / hello.html ao chamar render_template para renderizar a saudação no modelo. Esse padrão evita conflitos entre os modelos com os mesmos nomes.
Use o trecho de código fornecido a seguir para criar hello.html e salvá-lo em hello2 / templates / hello2 / path.
{% extends 'hello.html' %} {% block hello %} {{ greeting }} , from Software Testing Help.
{% endblock %}
Este modelo é quase semelhante ao hello.html. No entanto, ele herda a maior parte de suas partes HTML de hello.html. Observe o uso de {% block hello%} e {% endblock%}. O bloco hello em hello2 / hello.html substitui o bloco hello do template base hello.html.
Agora vamos abrir o arquivo __init__.py do hello2 Blueprint e mencionar o código fornecido abaixo nele.
from app.hello2.views import * # expose all views at the blueprint level
Nesta instrução, importamos todos os métodos decorados que criamos em views.py do hello2 Blueprint. Se necessário, podemos importar apenas os métodos / controladores que estão prontos para serem usados ou testados.
Registrar um Flask Blueprint com o aplicativo Flask
Agora, vamos abrir __init__.py no diretório do aplicativo Flask e registrar nosso hello2 Blueprint conforme mostrado no código a seguir.
from app.hello2 import hello2 app.register_blueprint(hello2, url_prefix='/hello2')
Aqui também, observe que podemos importar visualizações seletivamente e registrar apenas aquelas que estão prontas para uso ou teste.
Vamos executar nosso aplicativo Flask no modo de depuração com o comando python run.py do diretório raiz do projeto e navegar até http: // localhost: 8080 / hello2 para ver se a visualização de hello2 funciona bem.
O resultado no navegador deve ser semelhante ao exemplo mostrado abaixo.

Vamos trabalhar em uma apresentação melhor do blueprint hello2 usando a estrutura de bootstrap do Twitter. Além disso, na próxima seção, você aprenderá mais sobre os parâmetros opcionais para alterar o comportamento de um Flask Blueprint. Vamos ver isso com a ajuda de um exemplo de Flask Blueprint chamado Flask Bootstrap.
Exemplo de aplicação de frasco modular com projeto de frasco
Com base em nosso aprendizado do hello2 Flask Blueprint, vamos adicionar mais alguns projetos para entender como podemos criar aplicativos modulares no Flask.
diferença entre sql e sql server
Vamos supor que temos um aplicativo da web que oferece conteúdo aos visitantes na forma de e-books, tutoriais e cursos. Ele também tem algum conteúdo adicional sobre informações sobre a equipe e uma página inicial.
Se tentarmos acomodar esses novos recursos no aplicativo existente, teremos que criar visualizações em views.py e os modelos correspondentes no diretório de modelos do aplicativo. Da mesma forma, precisamos criar modelos e formulários em models.py e forms.py.
No entanto, manter todo o código do aplicativo se tornará complicado, e a colaboração com os outros membros da equipe será muito complicada e pode resultar em conflitos de confirmação ou fluxo de trabalho de desenvolvimento complexo.
Atualmente, nesta abordagem convencional, a estrutura do aplicativo é mostrada a seguir.
Para evitar tal cenário, podemos fazer uso do Flask Blueprints para criar módulos específicos para os recursos e respectivos conteúdos. Vamos criar alguns Flask Blueprints, com seus recursos separados.
Cada um dos layouts do Flask Blueprint será semelhante ao mostrado abaixo.
Use o script fornecido a seguir para criar os arquivos e diretórios necessários para os Flask Blueprints planejados. Execute este script a partir do diretório raiz do projeto.
cd app for dir in home courses tutorials ebooks do echo 'generating files for $dir ..' mkdir -p $dir/templates/$dir touch $dir/templates/$dir/$dir.html mkdir $dir/static touch $dir/static/style.css touch $dir/__init__.py touch $dir/views.py touch $dir/models.py touch $dir/forms.py done
Vamos primeiro criar recursos para o módulo inicial.
Abra views.py no diretório inicial e atualize-o com o código fornecido a seguir.
from flask import render_template, Blueprint home = Blueprint('home', __name__, template_folder='templates', static_folder='static') @home.route('/') def index(): return render_template('home/home.html')
Neste arquivo, importamos a classe Blueprint do Flask e a instanciamos com os parâmetros necessários com modelos separados e uma pasta estática. Em seguida, usamos a decoração @home para declarar a rota associada do método de visualização chamado índice.
Agora crie um modelo base.html Jinja2 no diretório de modelos do aplicativo. Use o código fornecido abaixo para atualizar o arquivo.
from Software Testing Help.
Learn More >> {% endblock %}
Estendemos a partir de base.html do Bootstrap. Observe o uso de div do container de classe e hero-unit. Além disso, criamos um botão para os usuários aprenderem mais. Modificamos esse HTML e usamos classes da estrutura Bootstrap do Twitter.
Agora atualize a página no navegador em http: // localhost: 8080 / hello2.html para ver a mudança de aparência de hello2.html.
A visualização do Hello2 alterado será semelhante à mostrada abaixo.

O uso do Flask-Bootstrap é totalmente dependente dos blocos que estão disponíveis para substituição ou modificação. Podemos usar os blocos mencionados abaixo para personalizar a experiência. Uma lista detalhada de todos os bloqueios possíveis pode ser vista em https://pythonhosted.org/Flask-Bootstrap/basic-usage.html.
Às vezes, quando queremos apenas corrigir um bloco em vez de substituí-lo completamente, podemos usar a função super () de Jinja2 para alcançar os resultados.
Crie um arquivo chamado hello2.css em hello2 / static e coloque o trecho de código abaixo para estilizar a cor do parágrafo em hello2 / hello.html.
p { color: orange; }
Pegue o trecho de código mostrado abaixo e coloque-o em hello2 / hello.html.
como eu abro um arquivo xml
{% block styles } {{ super() }} {% endblock %}
Agora abra views.py do Flask Blueprint hello2 e modifique a instrução do blueprint conforme mostrado abaixo.
hello2 = Blueprint('hello2', __name__, template_folder='templates', static_folder='static')
Navegue até o URL registrado do Flask Blueprint, ou seja, http: // localhost: 8080 / hello2 novamente. O resultado devido às alterações feitas até agora deve ser semelhante ao mostrado abaixo.

Flask Docker
Docker ajuda a armazenar um aplicativo em contêineres. Ele isola o ambiente de que o aplicativo Flask precisa de forma que não haja requisitos de ambientes virtualizados completos, como máquinas virtuais.
Além disso, os contêineres docker ocupam um espaço mínimo e são mais confortáveis para gerenciar e escalar com a ajuda de uma plataforma de orquestração. Atualmente, quando todos os outros aplicativos também têm implantação em contêiner, nós também precisamos aprender a implantar nosso aplicativo de amostra como um contêiner docker.
Um contêiner baseado em Linux pode ser executado em Windows e MAC. Um Flask App encaixado, portanto, pode ser implantado em qualquer sistema operacional, independentemente do sistema operacional no qual foi construído.
Nesta seção, explicaremos as etapas de encaixe de um aplicativo Flask. Iremos encaixar este projeto para que ele possa ser implantado em um contêiner com todas as dependências empacotadas dentro dele.
Primeiro, instalar Docker em sua máquina.
sudo apt-get install docker.io
Assim que a instalação for concluída, vá para o diretório raiz do nosso projeto de amostra e crie um Dockerfile.
Escreva o código fornecido a seguir nesse Dockerfile.
FROM python:3 ADD . /flaskTutorialApp WORKDIR /flaskTutorialApp RUN pip install -r requirements.txt ENTRYPOINT ('python') CMD ('run.py')
Atualize o arquivo config.py e altere o banco de dados para SQLite, conforme mostrado abaixo.
# The SQLAlchemy connection string. SQLALCHEMY_DATABASE_URI = 'sqlite:///' + os.path.join(basedir, 'app.db') # SQLALCHEMY_DATABASE_URI = 'mysql://myapp@localhost/myapp'
Além disso, se esta é a primeira vez que você está trabalhando com o SQLite nesta série de tutoriais, crie o usuário administrador usando o comando flask fab create-admin.
Verifique se o usuário Admin pode fazer login no aplicativo.
Agora construa a imagem docker de nosso aplicativo de amostra usando o comando abaixo.
sudo docker build --tag flask-tutorial
Este comando leva algum tempo, pois baixa recursos do hub do docker. Uma vez que este comando esteja completo, verifique se as imagens apareceram usando o comando abaixo.
sudo docker images
Agora execute esta imagem Docker criada recentemente.
sudo docker run -p 5001:8080 flask-tutorial:latest
O console mostrará as mensagens de log do servidor de desenvolvimento.
A instalação do Docker resulta na criação de uma NIC virtual com o nome docker0. Encontre o endereço IP usando o comando sudo ifconfig. Depois de obter o IP do Docker, você pode acessar o aplicativo navegando até a URL fornecida abaixo.
http: //: 5001
Assim que estiver confiante com o desenvolvimento do aplicativo, você pode implantar sua imagem Docker no Docker Hub para que os outros façam o download e usem.
Testando o Flask Blueprint
Agora vamos criar alguns testes para testar o Blueprint hello2. Vamos ver se nosso aplicativo de amostra retorna o código HTTP correto quando o cliente envia uma solicitação Get para recursos no endpoint / hello2 ou não. Se você se lembra, registramos nosso Flask Blueprint hello2 com um url_prefix com o valor como / hello2.
Crie um arquivo chamado test_blueprint.py em testes e adicione o seguinte teste a ele.
def test_hello2(client): resp = client.get('/hello2') assert 308 == resp.status_code
HTTP 308 pertence ao redirecionamento permanente e espera-se que nosso aplicativo Flask precise redirecionar a solicitação para os recursos relacionados ao Blueprint chamado hello2.
Agora vamos adicionar outro teste para verificar o caminho raiz dos recursos do nosso Blueprint. Vamos adicionar um teste para ver se ele tem um valor ou não.
from app.hello2 import hello2 def test_rootpath(): assert hello2.root_path is not None
Agora vamos executar esses testes junto com os outros testes para garantir que eles estão passando.
pytest -v
Você veria uma saída semelhante dos resultados do teste, conforme mostrado abaixo.

Agora, envie todas as alterações para o repo e publique essas alterações no repositório remoto no Github. Compare as diferenças entre o código e o do branch master e crie uma solicitação pull se não houver conflitos.
A solicitação pull invoca os trabalhos de construção que fazem parte do nosso fluxo de trabalho Github. Se todas as verificações das solicitações pull do tutorial-4 não falharem, podemos mesclar com segurança esse branch com o master.

perguntas frequentes
P # 1) O que é Flask BluePrint?
Responda: O Flask Blueprint é uma maneira de estruturar um aplicativo Flask em módulos menores e reutilizáveis. Um Flask Blueprint tem seus recursos separados, como visualizações, modelos, arquivos estáticos, modelos, formulários, etc. Usamos a abordagem Flask Blueprint para criar aplicativos Flask escaláveis e de fácil manutenção.
P # 2) Como você usa o Flask Blueprint?
Responda: Para usar o Flask Blueprint, precisamos importá-lo e registrá-lo com o objeto Flask Application, usando o método app.register_blueprint. Podemos passar um valor para o parâmetro url_prifix para prefixar um caminho para as rotas do Flask Blueprint.
Conclusão
Neste tutorial, explicamos Flask Blueprints junto com os conceitos de criação de recursos estáticos para um aplicativo Flask. Exploramos os benefícios de usar o Flask Blueprint junto com os pensamentos sobre os recursos do blueprint com a ajuda de um plugin do Flask chamado Flask-Bootstrap.
Também cobrimos os conceitos de criação da imagem Docker do aplicativo de tutorial de amostra do Flask. Além disso, também criamos dois testes para validar o Flask Blueprints.
Em nosso próximo tutorial, cobriremos os padrões comumente seguidos durante a construção de recursos nos aplicativos da web usando o Flask.
=> Visite aqui para aprender o frasco do zero
Leitura recomendada
- Tutorial de API do Flask com exemplo | Estendendo Flask com APIs
- As 31 principais perguntas populares da entrevista em Python Flask com respostas
- Django Vs Flask Vs Node: Qual Framework Selecionar
- Padrões de design e práticas recomendadas para aplicativos da Web
- (Top 10) Melhores plataformas de software de desenvolvimento de aplicativos de 2021
- 51 principais perguntas e respostas da entrevista de bootstrap