ScornInPC 1 Denunciar post Postado Novembro 20, 2007 Ola galera http://forum.imasters.com.br/public/style_emoticons/default/natal_noel.gif (gostei deste emotion) To aqui pra falar de Python novamente, e desta vez, to afim de fazer um guia definitivo de programação python para web. Nestes tutoriais, vou falar sobre como usar Python como CGI. Bem minha experiencia com frameworks e mod_python não foraum muito agradaveis. Logo estou postando como trabalhar com CGI, pra aqueles que querem começar do 0 e não pular para o proximo passo. Bem talvez num futuro eu começe a falar sobre frameworks mas, to gostando do modo CGI, ja que seguea risca o formato python, sem aqueles comandos, e estruturas de diretórios, e mudanças em arquivos de configurações, e sem contar que a maioria dos servidores possuem suporte á CGI. Bem, é isso, vou começar uma série de tutoriais do basico ao avançado, no CGI aos frameswork (talvez, pq não) e quem sabe juntar tudo depois e publicar online, sei lá. P: "Ta de brincadeira né?" http://forum.imasters.com.br/public/style_emoticons/default/natal_dry.gif R: "Não" http://forum.imasters.com.br/public/style_emoticons/default/natal_w00t.gif ps: esses emotions estão de mais. chega de bobeira ^^ (é que aqui eu me sinto em casa) - Instalação Bem primeiro vamos ao nosso ambiente de trabalho ok? Como estou de windows, vou descrever todo o processo para windows, mas pra quem usa linux, sabe onde mudar certas coisas. Bem, precisamos do Apache[1] e o Python[2] instalado. Bem, não vou explicar como se instala os dois, por que pra instalar é só ir dando "Next" ou "Proximo" http://forum.imasters.com.br/public/style_emoticons/default/natal_smile.gif [1] http://httpd.apache.org/download.cgi [2] http://www.python.org/download/ Bem, após instalados, procuremos o arquivo httpd.conf que fica dentro do diretório conf do apache. abrimos ele com o bloco de notas mesmo, e localizamos o parametro "ScriptAlias". Nele voce configura qual o diretório ficará os arquivos CGIs do lado cliente. Logo a baixo você encontra onde ficará os arquivos do lado servidor, algo assim: <Directory "D:/www/cgi-bin"> AllowOverride None Options None Order allow,deny Allow from all </Directory> Como perceberam, meus arquivo de CGI ficam em D:/www/cgi-bin e podem ser acessados atravez de http://localhost/cgi-bin/ Mudem a vontade, e restartem, reinicializem ou matem o processo e suba novamente seu apache. Pronto, instalação completa, vamo programar http://forum.imasters.com.br/public/style_emoticons/default/natal_laugh.gif - Começando a Programar Vá até o diretório que foi configurado para seus scripts CGI e crie um arquivo chamado tuto_1.py. Vale comentar que o .py é um costume meu, mas aqui pode ser qualquer extensão, sendo html, htm, txt ou até sem extensão, mas como o script é em Puthon, eu utilizo .py. Nos nossos scripts python, precisamos de 4 coisas: 1 - Local do interpretador 2 - Codificação 3 - Cabeçalhos 4 - Quebra de linha Um script inicial ficaria assim #!C:\\Python25\\python.exe #-*- coding: ISO-8859-1 -*- print "Content-type: text/html; ISO-8859-1" print print ''' <html> <head> <title> Programando em Python para WEB :: Tutorial 1</title> <head> <body> Olá </body> <html> ''' Na primeira linha, temos o caminho do nosso interpretador, o local onde instalamos nosso python. Na segunda linha, dizemos que nosso arquivo será ISO-8859-1, se não foi utilizado codificação, o script gerará erro ao encontrar acentos no código, outras codificações como UTF-8 tambem podem ser usadas. Na terceira linha de código, temos nossos cabeçalhos, tudo que for posto aqui, será cabeçalho. No exemplo, estou enviando, que o script será text/html e codifcado em ISO-8859-1. Na quarta linha, um print. Isso, só um print, porem esse print serve para diferenciar os headers do body, ou seja, tudo que for antes deste print, será cabeçalhos HTTP, e tudo que tiver depois, será HMTL e derivados. Na quinta linha do código, nosso html. Bem, esso foi o primeiro e o segundo tutorial desta tópico. Bem, não sou velho, mas ja ta tarde para mim, então, amanha eu posto mais coisa ok? ps: desculpem a quantidade de emotions, mas é que eles são muito massa http://forum.imasters.com.br/public/style_emoticons/default/natal_tongue.gif []'s Compartilhar este post Link para o post Compartilhar em outros sites
ScornInPC 1 Denunciar post Postado Novembro 20, 2007 - Trabalhando com templates (Parte I) Bem, depois de você ver esse tutorial até aqui, deve estar se perguntando um monte de coisa certo? Acho que a primeira seria: P: "Tudo eu vou ter que dar um print? sempre usar o print?" R: "Sim, mas existem tecnicas para isso" Bem, um template simples pode ser feito como se faz mascaras pro print. As mascaras funcionam mais ou menos assim >>> mascara = '%02d/%02d/%02d' >>> dia = 12 >>> mes = 02 >>> ano = 2004 >>> print marcara % (dia, mes, ano) 12/02/2007 bem, aplicando isso ao nosso tutorial podemos fazer alguma coisa assim html = '''<html> <head> <title>%s</title> <head> <body> <table border="0" width="100%%" cellpadding="0" cellspacing="0"> <tr> <td height="500" valign="top"> <!-- conteudo --> %s </td> </tr> <tr> <td align="center"> <!-- rodape --> %s </td> </tr> </table> </body> <html>''' No código acima estamos criando o template com o titulo e nosso conteudo dinamico. Assim nosso script completo ficaria assim: #!/usr/bin/python #-*- coding: ISO-8859-1 -*- print "Content-type: text/html; ISO-8859-1" print html = '''<html> <head> <title>%s</title> <head> <body> <table border="0" width="100%%" cellpadding="0" cellspacing="0"> <tr> <td height="500" valign="top"> <!-- conteudo --> %s </td> </tr> <tr> <td align="center"> <!-- rodape --> Programando em Python para WEB Passo à Passo Completo by ScornInPC </td> </tr> </table> </body> <html>''' titulo = "Programando em Python para WEB :: Tutorial 2" conteudo = "Olá" print html % (titulo, conteudo) Lembrando que esta é a primeira parte do tutorial de templates, e que esta não convem quando temos templates extremamente complexos. Esta tecnica é boa para pequenos projetos, ou projetos onde não precisamos de design, como ferramentas de administração ou soluções internas. Compartilhar este post Link para o post Compartilhar em outros sites
RickinPC 0 Denunciar post Postado Novembro 20, 2007 O Tutorial está otimo e parece que vai ficar bem melhor, mas o que é esse (''' ''') são 3 aspas simples? e você poderia comentar um pouco essas coisas diferentes. bem pelo menos diferentes pra mim que sou iniciante em Python http://forum.imasters.com.br/public/style_emoticons/default/natal_biggrin.gif Compartilhar este post Link para o post Compartilhar em outros sites
ScornInPC 1 Denunciar post Postado Novembro 20, 2007 E ae RickinPC, entaum, algumas pessoas estão me perguntando, mas não estão postando aqui, porem ai vai 1° - Preciso identar o código HTML? não, isso é um costume de programador =) 2° - O que é isso '''? são 3 aspas simples? Sim, isso são 3 aspas simples, serve para criar strings com quebra de linha, se eu fosse criar uma string assim de linha simples, poderia ser assim html = "<title>%s</title>" e não html = " <title> %s </title>" para isso deveria ser html = ''' <title> %s </title>''' 3 aspas simples =) qualquer duvida, só postar Compartilhar este post Link para o post Compartilhar em outros sites
ScornInPC 1 Denunciar post Postado Novembro 20, 2007 Agora que fui ver seu Nick AUEhUAEhUAHe =) Compartilhar este post Link para o post Compartilhar em outros sites
RickinPC 0 Denunciar post Postado Novembro 21, 2007 Esse nick é em homenagem a você porque eu te adimiro muito no mundo da programação... EU SOU SEU FÃM... hhehehee brincadeiras a parte Obrigado por responder isso é justamente a minha dulvida mas me espressei mal na pergunta e não falei da identação. valew!!! Compartilhar este post Link para o post Compartilhar em outros sites
ScornInPC 1 Denunciar post Postado Novembro 22, 2007 poxa, quase 100 visualizações em 3 dias e só o rick comentou? "/ Compartilhar este post Link para o post Compartilhar em outros sites
mx loco 1 Denunciar post Postado Novembro 22, 2007 Boa velho... tambem estou me preparando para aprender python, e nos ultimas 2 semanas estava procurando materias para estudos e plataforma de desnvolvimento etc (zope e companhia), porem axeu muito xato usar uma linguagem e depender de "outras" tecnologias para desenvolver. Espero que nao deixe a peteca caiar, estaremos ai sempre para aprender. Gracias Compartilhar este post Link para o post Compartilhar em outros sites
ScornInPC 1 Denunciar post Postado Novembro 22, 2007 aeeeeeeee =) entaum mx, essa idéia de começar do zero foi justamente isso que você falo, "usar uma linguagem e depender de "outras" tecnologias" é tenso, e assim to tentando achar partes à partes, para poder chegar a tais tecnologias sem um efeito drastico, por exemplo, na proxima parte, to preparando alguma coisa com o cheetah, que é um modulo de templates, muito legal, e a base de muitos outros frameswork. Bem, a idéia é ajudar e me ajudar a criar um roteiro de facil aprendizagem, ja que existem Ns frameswork, que funcionam de Ms maneiras com outros Ns frameswork. pois bem, aguardem pois to tentando montar uma 2° parte sobre template, que fará deixará mais facil ainda de criar templates. Aconselho que quizer realmente curtir o post, assina-lo, para receber em seu email quando tiver atalização. []'s Compartilhar este post Link para o post Compartilhar em outros sites
ScornInPC 1 Denunciar post Postado Novembro 25, 2007 - Trabalhando com templates (Parte II) Iremos nesta parte de template, levantar uma das maiores dificuldades encontradas neste modo de programação para WEB, e como contorna-la. Indo direto ao ponto, tudo que estiver no diretório cgi-bin, será "executado", ou seja, se não for algo executavel, irá gerar um erro. Coisas não executaveis, são images, folhas de estilo, arquivos para download. Para trabalharmos em templates mais complicados, precisamos ter um diretório no nosso diretório raiz do servidor (apache). Por exemplo, nosso diretório raiz é o c:/www, e o nosso cgi é c:/www/cgi-bin, então precisamos usar os dois diretórios para criarmos nosso site, o c:/www para arquivos não executaveis, e o c:/www/cgi-bin para os executaveis. Bem, com isso em mente podemos começar nosso tutorial http://forum.imasters.com.br/public/style_emoticons/default/natal_biggrin.gif Para nosso tutorial precisamos de criar 2 diretórios, um em C:/www/tuto_3 e outro em C:/www/cgi-bin/tuto_3. Como dito, no C:/www/tuto_3 ficará as imagens, folhas de estilos e arquivos para download, no C:/www/cgi-bin/tuto_3 ficará os arquivos executaveis. os arquivos basicos usados no nosso tutorial pode ser baixado em http://www.sendspace.com/file/zhdvo0 ps: Quem tiver problemas em baixar o arquivo, pode entrar em contato cmg, pelo post ou por MP, por favor No arquivo, possui as imagens e os templates, arrumando tudo, meu diretório apache ficou assim: C:/www/ /tuto_3/ /images/ bar.jpg bar2.jpg button.jpg logo.jpg whiteblock2.gif C:/www/cgi-bin/ /tuto_3/ index.py /templates/ menu.html template.html Os templates funcionam do mesmo jeito que foi explicado no tutorial anterior, porem, salvamos em arquivos separados, para podermos deixar nosso código mais limpo, e separar o código do layout. Nosso arquivo principal é o index.py, é nele que iremos trabalhar, tendo os arquivos nos seus diretórios. Então, para não variar, precisamos do nosso padrão #!/usr/bin/python #-*- coding: ISO-8859-1 -*- print "Content-type: text/html; ISO-8859-1" print Agora precisamos carregar nosso template principal fp = open('templates/template.html') html = fp.read() fp.close() e o nosso menu fp = open('templates/menu.html') MENU = fp.read() fp.close() criamos uma variavel CONTEUDO (com um espaço em branco, falaremos mais dela depois) e mostramos o conteudo de tudo junto CONTEUDO = ''' ''' print HTML % (MENU, CONTEUDO) o código completo fica assim #!/usr/bin/python #-*- coding: ISO-8859-1 -*- print "Content-type: text/html; ISO-8859-1" print fp = open('templates/template.html') HTML = fp.read() fp.close() fp = open('templates/menu.html') MENU = fp.read() fp.close() CONTEUDO = ''' ''' print HTML % (MENU, CONTEUDO) e produz o seguinte efeito Talvez a coisa tenha ficado um pouco complicada, porem, se você pensar que está rodando o site de um local, e pegando as imagens de outro, fica mais facil. Nos meus templates, as imagens estão assim <img src="../../tuto_3/images/logo.jpg" height="45" width="747"> Porem você pode chama-las de varias outras maneiras <img src="http://meusite.com.br/tuto_3/images/logo.jpg" height="45" width="747"> ou <img src="c:/www/tuto_3/images/logo.jpg" height="45" width="747"> Talvez você usando o caminho WEB completo, seja mais flexivel. A coisa ta ficando boa, certo? http://forum.imasters.com.br/public/style_emoticons/default/natal_tongue.gif Já ta dando pra fazer uma coisa ou outra, bem legal. No proximo tutorial sobre templates, vou falar como separar os códigos HTML de Python de CSS e assim por diante de maneira facil. Até a proxima Compartilhar este post Link para o post Compartilhar em outros sites
ScornInPC 1 Denunciar post Postado Novembro 26, 2007 - Trabalhando com templates (Parte III) Com a 3° parte sobre templates, ficará mais claro como trabalhar semaradamente, um verdadeiro workflow, entre programadores e designers. Com esta parte tambem, quem não conhecer muito de CSS, ou não tiver visto os arquivos do tutorial anterior, talvez fique um pouco perdido. Os arquivos aquim são os mesmo do tutorial anterior, porem seguindo o padrão WEB, largando as tabelas e partindo para os DIVs http://forum.imasters.com.br/public/style_emoticons/default/natal_happy.gif Bem, resumidamente, temos o nosso template padrão <html> <head> <title>Programando em Python para WEB :: by ScornInPC</title> <link type="text/css" rel="stylesheet" href="<span class="postcolor">../../tuto_3</span>/style.css"> </head> <body> <div id="site"> <div id="banner"> Programando em Python para WEB! <div id="banner_img"></div> </div> <div id="divisao"> <div id="menu">%s</div> <div id="conteudo">%s</div> </div> </div> </body> </html> Nosso template do menu <ul> <li><a href="">Inicio</a></li> <li><a href="">Parte I</a></li> <li><a href="">Parte II</a></li> </ul> <div id="menu_final"></div> Nossa folha de estilo, que lembrando, deverá ficar no diretório fora do CGI-BIN, pois não é um arquivo executavel body { margin:0px; color: #000000; background-color: #FFFFFF; text-align: center; font-family: Calisto MT; } a { color: #FFFFFF; font-weight: bold; font-size: 12px; text-decoration: none; } a:hover { text-decoration: underline; } #site { width: 747px; margin: 0 auto; text-align: left; } #site #banner { font-family: Calisto MT; color: #004080; font-size: 30px; font-weight: bold; } #site #banner #banner_img { height: 45px; background-image: url(images/logo.jpg); } #site #menu { width: 163px; height: 300px; background-image: url(images/bar2.jpg); float: left; } #site #menu #menu_final { width: 151px; height: 113px; background-image: url(images/bar.jpg); } #site #menu ul { list-style: none; padding: 0px; margin: 0px; } #site #menu ul li { background-image: url(images/button.jpg); line-height: 29px; font-size: 12px; padding-left: 15px; cursor: pointer; } #site #conteudo { height: 250px; } Reparem que as imagens agora, fica no diretorio normal, ja que a folha de estilo está um diretório acima da imagem. Se percebermos, o problema com a confusão dos caminhos acabam aqui http://forum.imasters.com.br/public/style_emoticons/default/natal_biggrin.gif C:/www/ /tuto_3/ style.css <------ NOVO /images/ bar.jpg bar2.jpg button.jpg logo.jpg whiteblock2.gif C:/www/cgi-bin/ /tuto_3/ index.py /templates/ menu.html template.html Esta parte não disse muito, mas se pararmos para analisar, veremos que os códigos estão completamente separados, não misturando HTML com Python com CSS com JavaScript e bla bla bla. Essa é a maior vantagem que EU encontrei nesse modo de programar, com facilidade, já que não sou designer (só quebro o galho http://forum.imasters.com.br/public/style_emoticons/default/natal_tongue.gif ) Compartilhar este post Link para o post Compartilhar em outros sites
RickinPC 0 Denunciar post Postado Novembro 26, 2007 Parabéns maninho você mandou muito bem em todos os artigos, http://forum.imasters.com.br/public/style_emoticons/default/clap.gif mal posso esperar pra começar a trabalhar com dados, formulários, e fazer paginas dinamicas em Python. Compartilhar este post Link para o post Compartilhar em outros sites
mx loco 1 Denunciar post Postado Novembro 27, 2007 Valeu velho pela força... Nao deixe a peteca cair... tamos indo atras de te (No bom sentido ta) http://forum.imasters.com.br/public/style_emoticons/default/blush.gif Compartilhar este post Link para o post Compartilhar em outros sites
Bernardo Dias da Cruz 0 Denunciar post Postado Novembro 30, 2007 Cara.. talvez eu seja meio lento.. ou totalmente.. mas ainda nao descobri como fazer pra Rodar o python.. nao sei se interfere em algo, mas eu ja tinha instalado o apache para rodar com o php, entao a minha pagina de arquivos é em c:\Apache\htdocs (http://localhost/).. mas seguindo a sua configuração, no caso, a que já veio configurada no httpd.conf, a pasta de CGI é a C:\Apache\cgi-bin, e o python esta instalado em C:\bin\Python2..... então.. o que eu faço? mudo alguma coisa, ou faço algo que ainda não fiz.. até que deu pra entender bem o seu tutorial, as coisas estao bem explicadas, mas só preciso rodar a bagaça.. hehehe da uma força ai, valeu abraço Compartilhar este post Link para o post Compartilhar em outros sites
ScornInPC 1 Denunciar post Postado Novembro 30, 2007 Ola Bernado, bem, o python ta funcionando? se tiver ok, você vai ter que colocar seus script dentro da pasta C:\Apache\cgi-bin\ no cabeçalho (primeira linha do seu script) você coloca o caminho do seu interpretador python, que ta dentro de onde foi instalado #!C:\\Python25\\python.exe #restante do código dai você vai no seu IE ou FF, e digita lá, http://localhost/cgi-bin/nome_script.py lembrando que se você colocar só http://localhost/cgi-bin, vai dar que você não tem permissão, entaum coloque o caminho completo ok? bem, é isso ai só, esses são os detalhes, se não funcionar, alguma coisa ta errada ai =) ai a gente vai e faz um passo a passo via MSN ok? Compartilhar este post Link para o post Compartilhar em outros sites
Bernardo Dias da Cruz 0 Denunciar post Postado Novembro 30, 2007 Beleza pura! Funcinou.. Valeu cara. Agora ja da pra sair desmembrando esse novo mundo.. hahaha http://forum.imasters.com.br/public/style_emoticons/default/natal_w00t.gif Compartilhar este post Link para o post Compartilhar em outros sites
ScornInPC 1 Denunciar post Postado Dezembro 1, 2007 beleza, mas esse final de semana talvez não de para postar nada, pq estou em viajem =/ mas logo quando chegar vou ver se posto mais alguma coisa =) qualquer duvidas, to ae =) Compartilhar este post Link para o post Compartilhar em outros sites
Hélder.Maceió 0 Denunciar post Postado Dezembro 26, 2007 Vlw mesmo pelo tuto. Já encontrei varias apostilas de python mas essa de começar do zero é muito bom pessoal. Sou iniciante no zope e tenho sentido algumas dificuldades no trato do python. Isso aqui vai ser uma mão na roda. Segura aí, porque vamos crescer. Meu msn é helderdesouza@hotmail.com e mey skype é helder-souza. Adiciona aí pessoal, vamos formar um grupo forte. Compartilhar este post Link para o post Compartilhar em outros sites
ScornInPC 1 Denunciar post Postado Dezembro 26, 2007 aeeee pessoal =) ta dando vontade de voltar a escrever, mas essa época de festa é complicado =) mas vou voltar logo logo =) alias, gostei da idéia do grupo hem ^^ Compartilhar este post Link para o post Compartilhar em outros sites
Hélder.Maceió 0 Denunciar post Postado Dezembro 26, 2007 Ficaremos no aguardo. Vamos continuar mantendo contato Compartilhar este post Link para o post Compartilhar em outros sites