O Python é apenas para construir backends ao criar sites?

4

Eu não vi nenhum site construído pelo Python de modo que a URL do site contenha .py no final. Eu vi apenas index.html e index.php , mas às vezes nada como em SO. Eu sei que você pode esconder o fim de alguma forma por .htaccess -file.

Eu gostaria de saber o motivo disso.

Por que nenhum site termina com .py?

    
por Léo Léopold Hertz 준영 26.07.2009 / 19:17

9 respostas

4

Normalmente scripts PHP são acessados diretamente, similarmente a um script CGI - basicamente você acessa o script como qualquer arquivo regular, mas o servidor web intercepta esta requisição, executa o script e retorna a saída ao invés do conteúdo do arquivo.

A maioria dos frameworks Python tem seus próprios sistemas de roteamento, onde você define algo como:

urls = (
    ('^/article/(\d+)$', ArticleController),
    ('^/user/(.+?)$', UserController)
)

.. então você acessaria algo como ...

http://example.com/router.py?uri=article/123

.. e seria executado através do mapeamento de URL definido em urls , e enviar a solicitação para a classe apropriada ... mas ter a parte router.py em todas as suas URLs é um pouco ruim, então você usa mod_rewrite para redirecionar /(.*) para /router.py/$1 (seja via .htaccess , sua configuração do Apache, etc)

Você pode absolutamente fazer a mesma coisa com PHP, ou qualquer outra linguagem - isso é exatamente como o CodeIgniter funciona (um framework PHP)

Se você é totalmente insano, você poderia usar mod_rewrite e mapear /user/(\d+).py para /ViewController.php?id=$1 ou algo assim, mas geralmente não há razão para adicionar uma extensão falsa à página (há um poucas exceções, principalmente compatibilidade com versões anteriores e permissão de acesso a dados em diferentes formatos em uma API)

Você também pode fazer o "modo PHP" usando Python, se você escrever cada página como um script CGI separado, a maioria das estruturas Python tendem a usar a configuração MVC (ou MVC) que descrevi acima.

    
por 27.07.2009 / 08:32
17

Uma boa URL seria independente de tecnologias, portanto, uma extensão .php ou .py ou .rb é algo a ser evitado. Principalmente, frameworks python (como o Turbogears) lidam com toda a análise de URL e o programa python executado em segundo plano obtém todos os seus parâmetros em uma boa estrutura de dados, assim você não vê nenhuma extensão de arquivo nesse caso.

Veja "cool URIs não mudam" por Tim Berners-Lee

    
por 26.07.2009 / 20:43
8

Bem, provavelmente a maioria das pessoas esconde a extensão porque é o caminho mais inteligente a seguir. Isso significa que se você disser, mudou para o PHP (não que você gostaria de ...), você não teria que mudar as extensões.

No entanto, existem sites com extensões .py (várias partes do Google têm).

A melhor pergunta a fazer é: por que a maioria dos usuários de ASP.NET e PHP insiste em manter as extensões?

    
por 26.07.2009 / 21:45
3

O que é transferido para o seu computador é HTML (possivelmente com código CSS e JavaScript). CSS e JavaScript não são exibidos por si só, então você não vê essas extensões. HTML é o conteúdo a ser exibido, então você está acostumado a ver a extensão .html.

Agora, quem se importa se o documento HTML foi escrito manualmente no Bloco de Notas ou se foi dinamicamente montado com alguns programas que foram executados há apenas 0,1 segundo atrás. Isso não é diferença.

O PHP é frequentemente usado para criar documentos HTML dinamicamente. Adicionando extensão .php para documentos HTML que foram criados por um programa PHP é habitual e não significa muito. O usuário final vê um documento HTML no navegador.

O servidor da Web precisa de algumas informações sobre como localizar um documento HTML para ser veiculado - ler um documento HTML feito manualmente a partir do disco? Crie um executando algum programa PHP? A extensão .php pode ser usada como uma dica. Isso é apenas uma questão de configuração do servidor.

Se você estiver interessado em servir a Web com python, veja o projeto django

    
por 26.07.2009 / 19:26
3

Django, o (provavelmente) framework mais popular para fazer webapps / websites em python, usa mapeamento de url para funções python, então quando você requisita /url/ ele irá realmente chamar uma função que é designada para manipular requisições para aquele url. Em outras palavras, não há um mapeamento de 1 para 1 entre urls e arquivos .py.

Atualização (por comentário):

Em um site típico do php, o URL seria parecido com /path/to/file.php e, a partir dessa solicitação, o servidor web executa o arquivo php e retorna sua saída como Resposta HTTP .

No Django, uma URL do formulário /path/of/url/ é interceptada pelo framework, na verdade não corresponde a nenhum arquivo, é uma simples parte do HTTP Request , e o framework Django tem um mecanismo de despacho de url que mapeia um URL para uma função normal. Se encontrar uma função designada para manipular esse tipo de URL, ele a chamará e retornará a resposta HTTP que a função retornou.

link

    
por 27.07.2009 / 09:37
2

Aqui , pode ver que o Google deixe a extensão .py.

    
por 26.07.2009 / 23:45
1

Não diretamente relacionado à sua pergunta, mas não apenas sites criados com o Python. Todo o mecanismo de AI para EVE online (um jogo espacial MMP) é escrito em Python, eu acredito.

    
por 26.07.2009 / 21:03
1

Essa diferença é causada principalmente pela maneira como a solicitação é enviada.

Os sites que mostram uma extensão de arquivo são, na maioria das vezes, enviados diretamente pelo sistema de arquivos. Quando você vê um caminho de URL como /example/index.php , o servidor da web vai para o diretório example sob a raiz do documento, abre o arquivo index.php e executa seu conteúdo (simplificando um pouco). Como eles estão passando pelo sistema de arquivos, eles tendem a usar o nome do arquivo inteiro, incluindo a extensão.

Os sites que não exibem uma extensão de arquivo são, na maioria das vezes, enviados de alguma outra forma. Por exemplo, no Django , há (simplificando um pouco) uma tabela mapeando o caminho da URL para o código que processará a solicitação. Como aqui não há relação entre o caminho da URL e o caminho do sistema de arquivos, o mapeamento pode ser completamente arbitrário, e não há razão para adicionar uma extensão "falsa".

Existem exceções para o primeiro caso; por exemplo, com mod_rewrite você pode remapear o caminho da URL, ocultando facilmente qualquer extensão de arquivo (isso é muito comum).

A razão pela qual você não vê frequentemente o primeiro caso com Python é que a maioria das pessoas usa frameworks da web quando constrói sites com Python, que fazem seu próprio despacho. Isso também é comum mesmo com o PHP ( Drupal é uma estrutura PHP comum), mas a criação de páginas "independentes" (sem um framwork) é mais comum com PHP do que com o Python.

    
por 27.07.2009 / 01:32

Tags