Portuguese, Brazilian subtitles

← PS 06-02 Solução Rot13

Get Embed Code
4 Languages

Showing Revision 4 created 09/17/2013 by Renan Amorim dos Santos.

  1. Essas são as soluções para o dever
    de casa da Unidade 2.
  2. Lembre-se: ele foi dividido em duas partes.
  3. Nós tínhamos a ferramenta ROT13, e depois
    nós tínhamos a página de inscrição
  4. que testava erros e esse tipo de coisa.
  5. Eu vou mostrar rapidamente para vocês as
    minhas versões em funcionamento
  6. e depois eu irei mostrar o código, então
    vamos começar com o ROT13.
  7. Ok, aqui está meu ROT13 funcionando
    na minha máquina aqui.
  8. Eu poderia digitar "some text" e,
    se eu clicar em "Submit",
  9. ele fica em formato ROT13 dentro
    da caixa de texto.
  10. Se eu clicar em "Submit" novamente,
    ele volta para o texto original.
  11. É assim que sabemos que está funcionando.
  12. O programa está apresentando
    os dados corretos.
  13. Nós podemos ver ao digitar
    em nossa área de texto.
  14. Ele está preservando os dados.
  15. Muito bem, vamos dar uma
    olhada no código.
  16. Eu estou no arquivo appengine.py.
  17. Este é o "BaseHandler ROT13"
    que eu escrevi.
  18. A "class Rot13" herda da
    "class BaseHandler".
  19. Ela tem algumas funções úteis a mais.
  20. Primeiro, eu tenho uma função "write".
    Ela funciona como uma abreviação.
  21. Ou seja, eu posso escrever "self.write"
    em vez de "self.response.out.write".
  22. Não vou ter que escrever tanto.
  23. E depois eu comecei a usar
    algo chamado "templates".
  24. Eu vou gastar mais tempo
    em templates na Unidade 3.
  25. Elas me poupam do esforço
    de ter que digitar
  26. em todas as substituições de strings.
  27. Coisa que você, provavelmente,
    fez para esse dever de casa.
  28. Isso se você ainda não se cansou
    e descobriu as templates.
  29. Minha página principal...
  30. Bem, vamos dar uma olhada
    no manipulador da URL primeiro.
  31. Nós temos "/unit2/rot13"
    que requisita a "class Rot13".
  32. Vamos subir aqui até à nossa
    "class Rot13". Ela tem duas funções.
  33. Tem a função "get".
    Ela renderiza
  34. esse arquivo chamado "rot13-form.html".
  35. Bem, você deve ter apresentado
    uma string inteira na sua versão.
  36. Essa função faz exatamente isso.
    Deixe-me lhe mostrar esse arquivo.
  37. Está bem aqui.
  38. Daqui em diante, queremos ter o hábito
    de separar estas coisas.
  39. Desculpe-me por ter feito
    vocês terem o aborrecimento
  40. de ter que escrever
    strings gigantescas antes.
  41. Mas vocês vão apreciar mais
    a beleza desse método
  42. depois de o terem feito
    da maneira mais difícil.
  43. Ela responde com uma HTML.
  44. Tem o nosso título.
  45. Tem um "h2", que escreve um
    texto enorme no topo da página.
  46. Aqui está o nosso "form".
    Seu método é "post".
  47. Tem uma "textarea".
  48. Essa "textarea" tem um
    "name" que é "text".
  49. Eu acrescentei um "style" aqui
    para fazê-lo um pouco maior.
  50. Isso é só CSS básico.
  51. Fique à vontade para copiar
    isso do meu programa demonstrativo
  52. depois que eu colocar
    o código-fonte na internet.
  53. Sobre essa sintaxe aqui, novamente, nós
    falaremos mais a respeito na próxima aula,
  54. mas ao em vez de fazer uma
    substituição de strings,
  55. ela substitui a variável "text"
    passada para o template,
  56. e o apresenta automaticamente para mim,
    para que eu não tenha que lidar com isso.
  57. E isso fecha a "textarea".
    E aqui está o botão "Submit".
  58. É bem simples!
  59. Se eu fosse desabilitar essa
    habilidade "autoescape",
  60. que é definido por esse parâmetro aqui --
    deixe-me mostrar como ele se comporta.
  61. Ok, aqui nós temos um texto aqui.
  62. Lembre-se de que eu desabilitei o texto...
  63. Desculpe.
  64. Eu desabilitei a apresentação do texto.
  65. Então, vejamos o que acontece
    quando eu clico em "Submit".
  66. Funciona da primeira vez, mas
    da segunda, o texto pula fora da caixa.
  67. Por que isso aconteceu?
  68. Bem, ao colocarmos a área de texto
    ROT13 de volta na área de texto fechado,
  69. ele realmente fecha nossa área
    de texto na HTML
  70. e apresenta o texto fora da caixa.
  71. Se eu fosse olhar a fonte desse arquivo,
    o que você pode fazer facilmente no Chrome,
  72. você pode ver que isso aconteceu.
  73. Você pode ver meu template e depois pode
    ver que a minha área de texto foi fechada
  74. pela versão não-apresentada daquele texto
  75. e depois "escape properly!!" é
    colocado fora da área de texto.
  76. E aqui está o fechamento
    da área de texto do meu template.
  77. Então, nós queremos ter certeza...
    Se voltarmos para o editor
  78. e ativar a apresentação novamente -- isso
    é algo que provavelmente fazemos à mão,
  79. da maneira como aprendemos a fazer
    inicialmente -- se eu fosse no Chrome
  80. e recarregasse a página -- recarregasse,
    ela vai confirmar o envio do formulário --
  81. nós podemos ver que minha área
    de texto realmente foi apresentada.
  82. E é isso que o template possui,
    e é como ele é apresentado.
  83. Agora, o interessante é que,
    mesmo nosso HTML
  84. possui uma versão de apresentação
    de "menor do que/maior do que",
  85. ela apresenta como
    "menor ou maior do que",
  86. e quando nós clicamos em "Submit",
    o "menor e maior do que" aparecem.
  87. Não é a versão de apresentação.
  88. Espero que você tenha tido
    a oportunidade de experimentar isso
  89. e vê-lo com os próprios olhos.
  90. É assim que funciona.