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:
- 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); - Localizado o recurso, o Apache detecta que se trata de um arquivo PHP;
- 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;
- 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);
- 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.
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!
boa contribuição, dúvida básica mais importante.