Hoje acordei com inveja do @Bastter e decidi criar um concorrente pra Bastter.com, a Blastter.com. Vou usar um microframework web de Python, o Flask, pra criar minha aplicação.
Como nos tópicos extras, o que quero mais focar não é no código em si mas em mostrar aplicabilidades do Python em diversas áreas, ou em mostrar formas mais divertidas de aprender programação. No caso desta postagem, a intenção é mostrar pra vocês como montar uma aplicação web usando Python e Flask.
O Flask é uma biblioteca como as outras que já comentei por aqui, mas ela não vem com o Python, então devemos instalá-la usando o pip, que é o instalador de pacotes Python. Basta abrir um terminal e dar o comando:
pip install Flask
# em alguns computadores que têm o Python 2 e o Python 3, o comando pode ser diferente como:
pip3 install Flask
Framework instalado, podemos criar nossa primeira aplicação web. Precisamos importar o que precisamos do Flask, criar uma uma variável que será nossa aplicação e representará um objeto do Flask, criar uma rota para nossa página e dizer o que a página irá fazer. Então, criando um arquivo Python, adicionamos o código:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def ola_blaster():
return '<h1>Blastter.com</h1>'
app.run()
Acima, importei a classe Flask da biblioteca, criei um objeto que representará nossa aplicação e chamei de "app". Passei como parâmetro __name__, não se preocupem com isso mas é uma forma de dizer para o Flask onde está meu arquivo Python e onde ele deve procurar os arquivos necessários para a aplicação.
Em seguida vem @app.route('/'), que é um decorador em Python. Vou falar de decoradores quando falar de funções, então só entendam que o que ele faz é criar uma rota na nossa aplicação (chamei de '/' somente mas poderia ser '/indice' ou qualquer outro nome com uma barra na frente).
Abaixo do decorador definimos uma função que diz o que nossa página web irá mostrar. Quem nunca viu html deve estranhar esses <h1>, mas de novo não se preocupem com isso. Pretendo, quando terminar a parte de lógica, falar de web.
Então o retorno da nossa função é o que nossa página web irá mostrar. Por fim rodamos nossa aplicação com o comando run(). Rodando o arquivo Python no terminal, o terminal nos mostrará:
* Serving Flask app "teste" (lazy loading)
* Environment: production
WARNING: Do not use the development server in a production environment.
Use a production WSGI server instead.
* Debug mode: off
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
Nossa aplicação está dentro do endereço "
http://127.0.0.1:5000/". Clicando nele:

Pronto, criamos nosso primeiro site e já subimos em um servidor local usando Python e Flask.
Mas nosso site tá muito fraquinho ainda. Vou criar uma página html para ser o esqueleto de nosso site. Antes, preciso criar uma pasta com o nome "templates" e adicionar o arquivo html dentro dela, para que o Flask saiba onde procurar as páginas da nossa aplicação.
Não se preocupem com a sintaxe do html, não é o foco aqui. Então, criando um arquivo "index.html":
<!DOCTYPE html>
<html lang="pt-br">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="{{ url_for('static', filename='bootstrap.css') }}">
<title>Blastter.com</title>
</head>
<body>
</body>
</html>
Dentro das tags "body" irei adicionar o conteúdo de nosso site. Irei usar uma logo adaptada e criada pelo @guest em outro tópico aqui do site como a logo do nosso site Blastter.com. Pra isso, preciso criar uma pasta com o nome "static" dentro da nossa raiz de arquivos (tal como foi feito com a página "templates") e adicionar a imagem lá dentro. Então, até o momento a estrutura do nosso projeto tá assim:

Vejam que tenho duas pastas, static e templates. Dentro de templates eu adiciono nosso html e dentro de static eu adicionei nossa logotipo "logo fake.png". Ignorem o arquivo "bootstrap.css", foi só um arquivo a mais que adicionei deixar nosso site um pouco menos feio. Ah, e blastter.py é nossa aplicação.
Então, adicionando nossa logo em nosso site:
...
<body>
<div class="container">
<img src="static/logo fake.png" width="400px", height="150px">
<div class="page-header">
<h1>{{ titulo }}</h1>
</div>
</body>
...
Observem a linha "<h1>{{ titulo }}</h1>. Aqui eu posso usar uma variável do Python e inserir dentro de nossa aplicação web. Voltando ao nosso código Python, preciso importar também junto com o Flask a função "render_template", que renderiza html em nossa aplicação web:
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def index():
return render_template('index.html',
titulo='Blastter.com'
)
app.run()
Vejam os parâmetros de render_template. Nele eu adiciono a nossa página html e a variável título, que estava dentro de nosso h1, eu defini como a string "Blastter.com". Agora, nosso site já tem uma logotipo bem bonita e um título, então, rodando novamente nosso código Python e acessando nosso servidor local:

Tá ficando bonito. Percebam como eu adicionei um título ao site, ao html do site, usando uma variável de Python, que foi o título de nosso site "Blastter.com".
E assim como fizemos com o título podemos adicionar diversas outras coisas usando códigos Python dentro de nosso site. Irei criar duas listas em nosso código agora, uma carteira recomendada da semana e uma lista de recomendações buscando a PAS:
from flask import Flask, render_template
app = Flask(__name__)
carteira_recomendada = ['BRFS3', 'TRPL4', 'BRAP4', 'SUZB3', 'BIDI4', 'ALUP11']
recomendacao_pas = ['Empregar a sogra', 'Aposentadoria pelo INSS', 'Independência financeira', 'Ser síndico', 'Operar opções']
@app.route('/')
def index():
return render_template('index.html',
titulo='Blastter.com',
carteira = carteira_recomendada,
recomendacoes = recomendacao_pas
)
app.run()
Agora, para inserir esses valores dentro de nosso html:
...
<div>
<p class="h3">Carteira recomendada da semana</p>
{% for acao in carteira %}
<p>{{ acao }}</p>
{% endfor %}
<p class="h3">Recomendações pra ter paz na vida</p>
{% for recomendacao in recomendacoes %}
<p>{{ recomendacao }}</p>
{% endfor %}
<p class="h3">Análise do Blastter para Telemar</p>
<p>Análise feita pelo Blastter utilizando o padrão candlesticks, médias móveis, extensões de Fibonacci e Análise de Sentimento mostra que é BUY!</p>
</div>
...
O que quero que vocês foquem aqui é nos blocos de código dentro de chaves:
{% for acao in carteira %}
<p>{{ acao }}</p>
{% endfor %}
Sei que não falei de laços "for" ainda na teoria mas aqui é um bloco de código Python dentro de nosso html. A sintaxe é meio estranha mesmo, essas chaves e esses símbolos de porcentagem mas tirando isso vejam como o código é um código Python. Ele cria novos parágrafos no nosso html para cada ação recomendada na nossa carteira de ações definida em nosso código Python acima.
Percebam que a variável "carteira" foi passada como parâmetro dentro da função "render_template" no código Python, e o nosso html recebe a variável e faz o laço for dentro dela, mostrando em nosso html as ações recomendadas da semana. E a mesma lógica foi feita para a variável "recomendacao_pas".
Rodando nosso arquivo Python e acessando nosso servidor local, agora temos, tcham tcham tcham tcham, nossa Blastter.com:

Até responsivo nosso site é. Tremei, Bastter

Enfim, eis nosso site, vai bombar na web. Só reforçando que a ideia do tópico era mostrar uma aplicação web feita usando Python, e não esmiuçar o código.
Não foquem nos códigos que não entenderam, a gente pode comentar mais sobre web após terminar de abordar lógica de programação.