Jump to content

Archived

This topic is now archived and is closed to further replies.

Electron

[tutorial] Python para web - pegando dados de formulário

Recommended Posts

Olá, pessoal! Sou novo aqui e iniciante em Python, pretendo com esse tutorial passar um pouco (do pouco que tenho) de conhecimento sobre a linguagem Python, nesse exemplo vamos pegar os dados de um formulário de uma página HTML e montar outra página HTML exibindo esses dados.

 

O exemplo

 

Vamos montar a página de formulário usando um script Python chamado formulario.py, lembrando que a extenção .py não é obrigatória, poderia ser por exemplo formulario.form ou apenas formulario, mas por questão de costume e até mesmo pq com essa extensão editores como o Notepad++ reconhecem a linguagem Pythone aplicam o destaque de sintaxe automaticamente, e até mesmo para que ninguém coloque um .com ou um .exe.

 

Crie um arquivo chamado formulario.py e outro com o nome de processar.py.

Eu estou usando o Windows, por isso se você estiver usando o Linux deve fazer as alterações necessárias para testar os exemplos.

 

Formulário.py

 

Em formulario.py insira o seguinte conteúdo:

 

#!C:\\Python26\\python.exe
#-*- coding: ISO-8859-1 -*-
print "Content-type: text/html; ISO-8859-1"  
print 

print '''
<html> 
<head> 
	<title>Formulário</title> 
</head> 
<body background="http://www.wingsdove.com/free-backgrounds/background-offwhite-01.jpg" text="#dc7639"> 
	<h1 align="center"> Escreva seus dados, nome, telefone, nome do gato, do papagaio...</h1>
	<br> 
	<form action="processar.py" method="post"> 
	<p> <strong>Nome:</strong><input type="text" name="nome" id="nome" value=""/></p> 
	<p> <strong>Rua</strong><input type="text" name="rua" id="rua" value=""/></p> 
	<p> <strong>Cidade:</strong> <input type="text" name="cidade" id="cidade" value=""/></p> 
	<p> <strong>País:</strong> <input type="text" name="pais" id="pais" value=""/></p> 
	<p> <strong>Código postal:</stong> <input type="text" name="codigopostal" id="codigopostal" value=""/></p> 
	<p> <strong>Telefone:</strong> <input type="text" name="telefone" id="telefone" value=""/></p> 
	<p> <strong>Fax:</strong> <input type="text" name="fax" id="fax" value=""/></p> <p> Email: <input type="text" name="email" 	id="email" value=""/></p> 
	<p> <stong>Website:</stong> <input type="text" name="website" id="website" value=""/></p> <br> <input type="submit" 	value="Ok"/> 
	</form> 
</body> 
</html> '''

Explicando

 

#!C:\\Python26\\python.exe

Essa parte especifica o caminho (ou local) do python, se você estiver usando o Python 2.5 ou até mesmo se estiver usando uma versão posterior a 2.6 (pode acontecer) então acredito que uma simples alteração de python26 para python25 ou para python27, python28 (hehhe) vai salvar o tutorial.

 

#-*- coding: ISO-8859-1 -*-

Essa parte é a codificação do nosso script

“... se não foi utilizado codificação, o script gerará erro ao encontrar acentos no código, outras codificações como UTF-8 também podem ser usadas.”

 

print "Content-type: text/html; ISO-8859-1"

Esse é o cabeçalho da nossa página

 

print

Esse print sozinho é quebra de linha.

“...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.”

Se ainda restarem dúvidas visite o tópico criado por ScornInPC, essas citações são de lá:

http://forum.imasters.com.br/index.php?/topic/258840-programando-em-python-para-web/

 

 

print  “<HTML> <head><body>...”

O ultimo print escrito no código imprime o código HTML que será interpretado pelo browser, isso é HTML, e só.

 

<form action="processar.py" method="post">

Esse é parte do código do ultimo print, significa que aquela página HTML que vai ser “printada” no browser vai passar dados para o nosso arquivo processar.py

 

Processar.py

 

Em processar.py insira o seguinte código:

#!/python26/python
# -*- coding: UTF-8 -*-
import cgi
print "Content-type: text/html; ISO-8859-1"  
print  
html = ''' 
<html> 
<head>
	<title>Seus dados</title>
</head>
<body background="http://www.wingsdove.com/free-backgrounds/background-offwhite-01.jpg" >
<p>
<strong><font color="#dc7639">Eu te conheço, sei tudo sobre você. Quer ver?</font></strong> <br>
<br><br>
Seu nome é <i>%s; </i>
Você mora na rua <i>%s</i>; da cidade de <i>%s</i>;<br>
O país é <i>%s</i>, claro;<br>
O código postal  de  onde você mora é <i>%s</i>;<br>
O número do telefone da sua casa é <i>%s</i>, enclusive, liguei lá e passei uma cantada em sua irmã rsrsrsrs;<br>
Seu fax é <i>%s</i>;<br>
Seu email (<i>%s</i>), eu também sei e vou lhe encher de span hehheheh, brincadeira;<br>
E, por ultimo, seu website: <i>%s</i><br>

E aí, sei ou não tudo sobre você?? kkkkk<br>

Mas, você não sabe nada sobre mim (além de que escrevo errado, é claro)
<br><br>

Meu nome é <b>%s</b> e tenho <b>%s</b> de idade...
</p>
</body>
</html>
'''

meunome = "Electron"
minhaidade = "16 anos"

formulario = cgi.FieldStorage()
nome = formulario.getvalue("nome")
rua = formulario.getvalue("rua")
cidade = formulario.getvalue("cidade")
pais = formulario.getvalue("pais")
codigopostal = formulario.getvalue("codigopostal")
telefone = formulario.getvalue("telefone")
fax = formulario.getvalue("fax")
email = formulario.getvalue("email")
website = formulario.getvalue("website")

print html % (nome, rua, cidade, pais, codigopostal, telefone, fax, email, website, meunome, minhaidade)

Explicando

 

#!/python26/python
# -*- coding: UTF-8 -*-
import cgi
print "Content-type: text/html; ISO-8859-1"
print  

Essa parte do código já foi explicada no script anterior (formulario.py), menos “import CGI” que é para usarmos o módulo CGI.

 

html = ''' 
<html> 
<head>
	<title>Seus dados</title>
</head>
<body background="http://www.wingsdove.com/free-backgrounds/background-offwhite-01.jpg" >
<p>
<strong><font color="#dc7639">Eu te conheço, sei tudo sobre você. Quer ver?</font></strong> <br>
<br><br>
Seu nome é <i>%s; </i>
Você mora na rua <i>%s</i>; da cidade de <i>%s</i>;<br>
O país é <i>%s</i>, claro;<br>
O código postal  de  onde você mora é <i>%s</i>;<br>
O número do telefone da sua casa é <i>%s</i>, enclusive, liguei lá e passei uma cantada em sua irmã rsrsrsrs;<br>
Seu fax é <i>%s</i>;<br>
Seu email (<i>%s</i>), eu também sei e vou lhe encher de span hehheheh, brincadeira;<br>
E, por ultimo, seu website: <i>%s</i><br>

E aí, sei ou não tudo sobre você?? kkkkk<br>

Mas, você não sabe nada sobre mim (além de que escrevo errado, é claro)
<br><br>

Meu nome é <b>%s</b> e tenho <b>%s</b> de idade...
</p>
</body>
</html>
'''

Essa parte guarda na variável html código para ser “printado” posteriormente. Percebam o %s ,no lugar dele vão ficar todos os campos do fomulário do script anterior: Nome, rua, cidade, país, email, código postal, etc etc.

 

meunome = "Electron"
minhaidade = "16 anos"

As duas primeiras variáveis contém meu nome e minha idade, elas são totalmente desnecessárias nesse código (eu poderia escrever meu nome direto no código html), mas por questão de aprendizado eu criei elas.

 

formulario = cgi.FieldStorage()
nome = formulario.getvalue("nome")
rua = formulario.getvalue("rua")
cidade = formulario.getvalue("cidade")
pais = formulario.getvalue("pais")
codigopostal = formulario.getvalue("codigopostal")
telefone = formulario.getvalue("telefone")
fax = formulario.getvalue("fax")
email = formulario.getvalue("email")
website = formulario.getvalue("website")

Toda essa parte é usada para guardar os campos do formulário HTML em variáveis, percebam que há a variável nome, que guarda o conteúdo do campo “nome”, rua que guarda o conteúdo do campo “rua” e assim por diante.

Estamos quase lá, só falta a ultima parte:

 

print html % (nome, rua, cidade, pais, codigopostal, telefone, fax, email, website, meunome, minhaidade

O que isso faz? Simples, ele imprime o código HTML da nossa página. Como? Lembra do %s, poi é ele vai ser “substituído” por todas as variáveis entre parênteses (na ordem). Esse código manda imprimir a variável html colocando as variáveis entre parênteses (na ordem que estão) no lugar do %s que se encontra dentro da variável HTML.

 

Peço que se alguém encontrar um erro nos códigos ou formas melhores de se fazer, me avise, ficarei muito agradecido.

 

Esse tuorial ainda não está completo (aliás, está muito longe disso), pois existem muitas falhas, entre elas: o usuário pode não digitar nada e então as variáveis vão receber o valor "None", ou o usuário pode digitar algo que não tem nada a ver no campo código postal ou email. Com o tempo, eu vou aprender mais e tentar consertar essas falhas, peço que levem em consideração que eu começei a programar Python a poucos dias e por isto posso cometer (ou ter cometido) vários erros.

 

Valeu pessoal :D

Share this post


Link to post
Share on other sites

Interessante.

Bom tópico.

 

Imagem Postada

Share this post


Link to post
Share on other sites

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.