Html dentro de variavel no python

862 views
Skip to first unread message

Thiago Braga

unread,
Jul 22, 2016, 11:07:18 AM7/22/16
to web2py-users-brazil
Bom dia amigos,

Eu gostaria de ler algo sobre como colocar um formulario html dentro de uma variavel no python, gostaria de por um dropbox não encontro nada.

Paulo Martins

unread,
Jul 22, 2016, 11:34:44 AM7/22/16
to web2py-us...@googlegroups.com
Olá,

Há muitas formas de colocar HTML numa variável no web2py, agora a melhor depende do contexto e objetivo.
No manual no seguinte capítulo tem várias formas: http://web2py.com/books/default/chapter/29/05/the-views

Dois exemplos mais comuns:
- Usando código HTML direto e puro (convém ter noções mínimas de segurança, é o meu método preferido). No entanto por segurança (e ainda bem pois é perigoso de outra forma) o web2py filtra tudo o que passa para o client, fazendo escape a algumas coisas, o que quebra o código HTML, por exemplo <b>hello</b> é convertido para &lt;b&gt;hello&lt;/b&gt; se computado num bloco Python no web2py. Para desligar esse filtro e passar código que não queremos que seja filtrado, a forma é usar a função XML(), por exemplo numa variável:
var = XML("<b>hello</b>")
Para que o código HTML dessa variável seja exibido na página, basta colocar dentro de uma view/página html: {{=var}} Também é possível correr diretamente pelo XML usando {{=XML("<b>hello</b>")}} As chavetas indicam que estamos a correr Python dentro de um ficheiro HTML, o sinal de igual é um atalho que indica para fazer print/colocar na página HTML o resultado computado. Se tentar fazer por exemplo {{="<b>hello</b>"}} sem o XML() diretamente, vai resultar nas tags < > convertidas para entities por segurança. Com o XML() é possível escrever também javascript direto.
Desta forma o código HTML passará sempre normalmente numa variável.
PS: num caso de um formulário, para o código não ficar apenas numa linha, o melhor talvez fosse usar algo do género com 3 aspas:
var = XML("""<form>
<p>
Texto
</p>
</form>""")
Em teoria desta forma o código não seria todo exibido/escrito numa única linha, pois as 3 aspas respeitam os parágrafos numa string. Mas não me recordo se isto funciona com a função XML() e agora não posso testar, é apenas em teoria, se der erro ignore.


- Outra forma é usando os helpers do web2py, que são uma espécie de funções Python conversoras para tags HTML que podem ser manipuladas. Um exemplo usando o mesmo HTML do exemplo anterior:
var = B("hello")
Fazendo {{=var}} vai resultar no mesmo acima. No caso de um formulário seria mais complexo, seriam helpers dentro de helpers, por exemplo:
var = FORM(P("Texto))
Para colocar na página: {{=var}}
PS: raramente uso helpers para ser sincero, por isso de memória posso estar a dar algum erro, o ideal é consultares o manual na respetiva secção sobre helpers, pois tem regras próprias: http://web2py.com/books/default/chapter/29/05/the-views#HTML-helpers

Para abrir a partir do dropbox há muitas formas. Em teoria basta guardar como ficheiro de texto txt, por xemplo, e usar o comando open() ou algo do género do Python para abrir/ler o ficheiro e usar o que lá está (o web2py ainda não usa Python 3+, por isso cuidado com encodings, palavras acentuadas podem dar problema se não tratadas correctamente no código).

Não tenho a certeza se percebi bem a questão, do que entendi ficam estas ideias básicas. Quando comecei há uns anos nesta aventura Python também me ajudaram e foram pacientes comigo, por isso espero que seja útil.

Abraço




2016-07-22 16:07 GMT+01:00 Thiago Braga <thia...@gmail.com>:
Bom dia amigos,

Eu gostaria de ler algo sobre como colocar um formulario html dentro de uma variavel no python, gostaria de por um dropbox não encontro nada.

--
Você recebeu essa mensagem por estar inscrito no grupo web2py-users-brazil.
Para enviar uma mensagem ao grupo, envie email a: web2py-us...@googlegroups.com
Para se desinscrever, envie email a: web2py-users-br...@googlegroups.com
Para mais opções, visite o site do grupo em: http://groups.google.com/group/web2py-users-brazil?hl=en
---
Você recebeu essa mensagem porque está inscrito no grupo "web2py-users-brazil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para web2py-users-br...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.

Paulo Martins

unread,
Jul 22, 2016, 11:43:48 AM7/22/16
to web2py-us...@googlegroups.com

PS: errei na última parte do meu e-mail anterior, não é para usar open() pois abrir pelo dropbox é remoto não local. O ideal é usar a biblioteca urlib (vem com Python default; existe uma melhor chamada urllib2 mas é necessário instalar à parte) para abrir um ficheiro por url, por exemplo:
import urllib.request
with urllib.request.urlopen('http://python.org/') as response:
   html = response.read()

Abraço

Reply all
Reply to author
Forward
0 new messages