Python para Backend

Alguém sabe como posso usar Python para fazer o backend de um site?
Não quero utilizar PHP, quero usar Python para obter experiência!

Para criar site só precisa HTML.

PHP, Java, Python, etc. é necessário apenas pra web sites que fazem uso de conteúdo gerado dinamicamente.

Se já é desenvolvedor web, veja se esses links podem te ajudar a decidir o que seguir e pesquisar:

Exatamente da mesma forma que você utiliza PHP, Java, C++, e qualquer outra linguagem de programação que pode abrir um socket ou para a qual foi escrito um módulo para utilizá-la em conjunto com um servidor HTTP já pronto, como o Apache.

A idéia geral é que você receba um objeto da requisição no teu código Python e possa devolver uma resposta de alguma maneira. Você pode simplesmente abrir um socket em alguma porta do teu computador e aceitar conexões externas. Você vai interpretar essas requisições utilizando o protocolo HTTP e devolver uma resposta para quem as solicitou utilizando o mesmo protocolo de comunicação.

Contudo, essa é uma tarefa tão comum que pessoas/empresas criam ferramentas para te poupar desse trabalho massante e repetitivo (e ganhar dinheiro com isso, obviamente). É isso (e mais algumas outras coisas) que a maioria dos frameworks web abstraem para você. No caso do Python, temos o exemplo famoso do Django, que senta em cima de um servidor HTTP qualquer e encapsula as requests e responses de forma amigável para o teu código. É legal receber um objeto Request com tudo bonitinho e pronto né?

Quando você está desenvolvendo código para o Django, você pode subir o servidor pelo terminal, utilizando o próprio servidor HTTP provido pelo Python. É isso que a documentação do Django inicialmente te ensina a fazer quando tu tá aprendendo a utilizá-lo.

Os frameworks também geralmente disponibilizam uma engine de templating, para que você possa montar páginas .html de forma dinâmica, com acesso à variáveis através de uma sintaxe determinada por eles. Já viu o JSF do Java? É exatamente isso. Por exemplo, você pode fazer algo como <span>{{cliente.nome}}</span> para mostrar o nome do cliente que está guardado no objeto cliente. O framework vai ler a tua página, com os objetos necessários em mãos, substituindo {{cliente.nome}} pela string que está no objeto. O resultado, devolvido pelo servidor, vai ser algo como <span>javaflex</span>. Não existem só substituição de parâmetros, mas também algumas outras ferramentas que facilitam a criação do .html.

No PHP, por exemplo, utilizando o Apache (um servidor HTTP open source), funciona mais ou menos assim:

  1. O Apache recebe a requisição HTTP e a interpreta, decidindo aqui onde se localiza o recurso que o cliente deseja (ou mesmo se esse recurso existe, retornando um 404 em caso contrário, ou erros de acesso (401, 403) caso haja algum problema com a leitura de arquivos no sistema operacional);
  2. Localizado o recurso, o Apache detecta que se trata de um arquivo PHP;
  3. O Apache olha então em seus módulos se existe algo capas de renderizar o que se encontra no arquivo PHP, porque ele sozinho não sabe fazer isso;
  4. Se o módulo PHP estiver instalado, o Apache delega a requisição para o mesmo e aguarda a resposta (é aqui que você entra com o teu software);
  5. Dada a resposta pelo módulo do PHP, o Apache devolve a resposta de forma adequada ao cliente e fecha a conexão (ou não, tem casos onde a conexão pode ficar aberta).

A ideia é que isso funcione exatamente da mesma forma (ou de uma forma extremamente parecida) no Python.

Resumindo: aprende algum framework web pro Python (tem uma porrada, Django, Flask, etc) e se poupe de estudar coisas mais teóricas (ou de “baixo nível”) inicialmente. Depois, caso esteja curioso, estude tópicos como o protocolo HTTP de forma mais profunda, como são servidas requisições web, como o servidor HTTP delega a interpretação da requisição para o framework/ferramenta, e afins.

E antes de mais nada: saiba Python.

E como @pfk66 falou, se você quer um site com conteúdo estático, não é necessário nada disso. Basta montar as páginas com html e colocar em um servidor HTTP para que elas fiquem disponíveis online.

2 curtidas

Sabe lidar bem com sockets em Python?
Se não sabe, que tal estudar sockets pra ter uma base legal da comunicação interprocessual.

Acho que é um conhecimento válido e útil, mas, se ele for um iniciante, acho que ia causar mais dano (no sentido de atrapalhar o entendimento geral) do que benefício para ele.

Entendendo de forma geral como funciona uma arquitetura client/server e sabendo se virar em Python já dá pra utilizar um framework para abstrair legal!

1 curtida

boa contribuição, dúvida básica mais importante.

1 curtida