Porque me gusta el sistema de plantillas de web2py


Porque me gusta el sistema de puntos de vista de web2py

Vindo de mim, um elogio ao web2py pode parecer tendencioso, já que sou um dos desenvolvedores do framework . Viniendo de mí, un elogio a web2py puede parecer sesgada, ya que soy uno de los desarrolladores del marco. Porém uma coisa que me fascinou, mesmo antes de me tornar desenvolvedor, foi a implementação da camada de apresentação ( views , do modelo MVC ). Pero una cosa que me fascinó, incluso antes de convertirme en un desarrollador, fue la implementación de la capa de presentación (vistas, el modelo MVC ).

No web2py a camada de apresentação é parecida com código PHP : você utiliza a linguagem que precisar para apresentação do conteúdo (HTML, CSS, XML, JavaScript ou qualquer outra que desejar) e pode embutir código Python no meio. En web2py la capa de presentación es similar al código PHP : se utiliza el idioma que usted necesita para la presentación del contenido (HTML, CSS, XML, Javascript o lo que quieras) y se puede integrar el código Python en el centro. A grande sacada – que trás muita simplicidade e flexibilidade ao desenvolvedor – é exatamente o fato de podemos embutir código Python . El remate – que trae mucha sencillez y flexibilidad para el desarrollador – es exactamente el hecho de que podemos incrustar código Python . Com isso, ganhamos inúmeras vantagens: Así, ganamos varias ventajas:

  • Você não precisa aprender a utilizar uma linguagem de templates nova: é Python – mesma linguagem em que você programa seus models e controllers ! No es necesario aprender a usar una plantilla nueva lengua: es Python – el mismo idioma que el programa de su modelos y controladores!
  • Como o código da view pode ser transformado em um módulo Python , a execução da view fica muito mais rápida , pois o web2py a traduz para código Python puro e então o compila para bytecode ; En la vista de código se puede transformar en un módulo de Python , la aplicación de la vista es mucho más rápido porque el web2py la traduce a código Python puro y luego compila a código de bytes;
  • Você não fica limitado a uma linguagem restrita (como são as linguagens criadas para a camada de apresentação) – você pode utilizar todo o poder que Python lhe proporciona sempre! Usted no está limitado a un lenguaje restringido (como son las lenguas creadas para la capa de presentación) – puede usar todo el poder que Python te da nunca!
  • Você pode criar qualquer formato de saída para sua camada de apresentação , o que significa que não necessariamente a saída da sua view precisa ser escrita em alguma linguagem de marcação (HTML, XML etc.). Usted puede crear cualquier formato de salida para su capa de presentación, que no significa necesariamente la opinión de su producción debe estar escrito en cualquier lenguaje de marcado (HTML, XML, etc) .. Você pode, por exemplo, ter uma view que gera um arquivo JPEG, um texto em RTF, um documento em PDF, um arquivo em CSV e por aí vai; Puede, por ejemplo, tener una vista que crea un archivo JPEG, un texto en formato RTF, formato PDF, un archivo en formato CSV y así sucesivamente;
  • A camada de apresentação está desacoplada das outras camadas , o que significa que uma única view pode servir a vários controllers ou um único controller pode ter como apresentação várias views diferentes em ocasiões diferentes. La capa de presentación se desvincula de las otras capas, lo que significa que una sola vista puede servir o varios controladores de un solo controlador puede tener la presentación de varias vistas diferentes en momentos diferentes.

Eu poderia citar vários outros exemplos (inclusive da ótima integração da camada de apresentação com as outras camadas do framework ), mas as outras dicas ficarão diluídas nos próximos artigos. Podría citar muchos otros ejemplos (incluyendo la integración óptima del nivel de presentación con las otras capas del marco), pero los otros consejos, se diluye en los próximos artículos. Porém, não poderia deixar esse artigo sem código. Pero no podía dejar este artículo sin código. Como todo bom programador, vamos ao que interessa: Como cualquier buen programador, vamos a ello:

Exemplo 1 – View gerando HTML Ejemplo 1 – Ver la generación de HTML

Digamos que possuímos um sistema de inscrição em eventos e precisamos listar uma tabela com o nome do participante inscrito e assinalar se ele pagou ou não a inscrição. Digamos que tenemos un sistema de registro de eventos y necesitamos una lista de tabla con el nombre del participante registrado e indicar si tiene o no pagar la suscripción. Dessa forma, possuímos um model (por exemplo, models/db.py ) parecido com: Por lo tanto, tenemos un modelo (por ejemplo, modelos / db.py) como:

 db . define_table ( 'participante' , db. define_table («participante», 
     Field ( 'nome' , 'string' , length = 250 ), Campo ('nombre', 'cadena', longitud = 250), 
     # inclua outros campos aqui # Incluya aquí otros campos 
     Field ( 'pagou' , 'boolean' ), Field ("pagado", "booleano"), 
 ) ) 

Então precisamos de um controller que seleciona os nomes dos inscritos eo estado do pagamento. Así que necesitamos un controlador que selecciona los nombres de los abonados y la situación de pago. Vamos chamar esse controller de controllers/usuarios.py : Llamemos a los que los controladores de controlador / usuarios.py:

 def tabela_de_pagamentos (): tabela_de_pagamentos def (): 
     inscritos = db (). select ( db . participante . nome , db . participante . pagou , abonados = db (). seleccione (db. asistente. nombre, db. asistentes. pagado,
                            orderby = db . participante . nome ) orderby = db. asistentes. nombre) 
 return { 'nome_e_pagamento' : inscritos } retorno ('nome_e_pagamento': usuarios registrados) 
 

Com isso, nossa view será executada em um ambiente onde a variável nome_e_pagamento existe e seu conteúdo é o que foi retornado pelo controller acima. Con esto, a nuestro juicio se realiza en un entorno en el que la variable existe y su contenido nome_e_pagamento es lo que fue devuelto por el controlador hacia arriba. Vamos então criar uma view que gera HTML para o controller acima. Vamos a crear una visión que genera HTML para el controlador hacia arriba. Coloque no arquivo views/usuarios/tabela_de_pagamentos.html : Coloque los puntos de vista de archivos / usuarios / tabela_de_pagamentos.html:

 {{ if len ( nome_e_pagamento ) == 0 : }} ((Si les (nome_e_pagamento) == 0))
Não temos usuários cadastrados! Tenemos usuarios registrados!  :-(  :-( 
{{ else : }} ((Ventas:))
<table> <table>
  <tr> <tr>
    <td> Nome </td> Nombre <<td> / td>
    <td> Pagou? </td> <td> pago </ td>
  </tr> </ TR>
{{ (( 
 for usuario in nome_e_pagamento : usuario se encuentra en nome_e_pagamento: 
     if usuario . pagou : Si el usuario. Pagado: 
         pagou = 'Sim' tasada = "Sí" 
     else : otra cosa: 
         pagou = 'Não' tasada = 'No' 
     pass pasar 
 }} ))
  <tr> <tr>
    <td> {{ = usuario . nome }} </td> <td> = ((user.)) <nombre / td>
    <td> {{ = pagou }} </td> <td> tasada = (()) </ td>
  </tr> </ TR>
{{ pass ((Pase 
 pass }} pasar)) 

Tudo o que está entre {{}} será executado como código Python . Todo lo que está entre ((…)) será ejecutado como código Python . Além disso, o web2py inclui algumas novas palavras-chave para ajudar no processo de criação de views , são elas: Además, el web2py incluye algunas nuevas palabras clave para ayudar al proceso de creación de puntos de vista, ellos son:

  • {{=expressão_Python}} : executa expressão_Python e imprime o resultado no local; Expressão_Python = (()): Realizar expressão_Python e imprime el resultado sobre el terreno;
  • {{extend ‘arquivo.html’}} : utiliza a view arquivo.html como base para essa view ; ((‘Amplíe archivo.html’)): archivo.html utiliza la vista como la base para este punto de vista;
  • {{include}} : indica onde outras views que utilizam essa como base serão adicionadas. ()) (Incluye: indica que las opiniones de otros que utilizan esto como base se añadirán.

Pode parecer estranho acima o uso da keyword pass . Puede parecer extraño utilizar la palabra clave por encima de pasar. Elas estão lá por conta de uma definição no sistema de apresentação do web2py : por conta de espaços na camada de apresentação fazerem diferença, seria complicado em todos os casos o programador manter a endentação correta do código. Ellos están ahí por una definición en el sistema de presentación de web2py : debido a los espacios en la capa de presentación para hacer una diferencia, sería complicado en todos los casos el programador para mantener la sangría de código correcto.
Para resolver esse problema o web2py então gera um novo código baseado em nossa view , ignorando a endentação que utilizamos – ele auto-endenta o código quando encontra if , for etc. Para resolver este problema, el web2py a continuación, genera un nuevo código basado en nuestra opinión, ignorando la sangría que utilizamos – se auto-sangría al código cuando encuentra si, por etc. Para voltar um nível, como a endentação na view é ignorada, precisamos utilizar a palavra reservada do Python pass . Para retroceder un nivel, como la sangría se ignora a la vista, debemos usar la palabra reservada de Python pasar. Note que essa palavra reservada faz parte da linguagem e sua função é apenas “passar” (não executa comando algum) – nesse caso ela serve como um sinal para o web2py voltar um nível na endentação. Tenga en cuenta que esta palabra clave es parte del lenguaje y su función es sólo “pasar” (no ejecutar cualquier comando) – en este caso sirve como una señal a la web2py retroceder un nivel en la sangría.
Note que como a endentação é feita automaticamente, eu não precisaria ter endentado o código entre {{}} . Tenga en cuenta que a medida que el sangrado se hace automáticamente, no hace falta tener el código entre sangría ((…)). Porém nesse caso a endentação não atrapalha o código de retorno da minha view e por motivos de organização deixei o código endentado. Pero la sangría no es un obstáculo para el código de retorno de mi vista y por razones de organización de izquierda el código con sangría.

Para o exemplo acima, se acessarmos a URL http://localhost:8000/welcome/usuarios/tabela_de_pagamentos (ou http://localhost:8000/welcome/usuarios/tabela_de_pagamentos.html ) teríamos como retorno a view acima processada, como nos dois exemplos abaixo, sem e com dados inseridos na tabela: Para el ejemplo anterior, si accede a la dirección http://localhost:8000/welcome/usuarios/tabela_de_pagamentos (o http://localhost:8000/welcome/usuarios/tabela_de_pagamentos.html ) devolvería como la vista procesada, como en dos ejemplos siguientes, sin y con los datos introducidos en la tabla:

Vea la tabla de pagos muestra web2py vacía
Ver web2py mostrando el pago completo de mesa

Nota: utilizei/modifiquei a aplicação welcome (que já vem com o web2py ) para fazer esses exemplos. Nota: He usado o modificado la aplicación de bienvenida (que viene con web2py ) para hacer estos ejemplos.

Exemplo 2 – View gerando CSV Ejemplo 2 – Ver la generación de CSV

Para os mesmos model e controller acima poderíamos ter uma view que gera um arquivo CSV com os dados, em vez de HTML. Por el mismo modelo y el controlador anterior podría tener una vista que genera un archivo CSV con los datos en lugar de HTML. Vamos então criar o arquivo views/usuarios/tabela_de_pagamentos.csv : Vamos a crear los puntos de vista de archivos / usuarios / tabela_de_pagamentos.csv:

 {{ (( 
 import cStringIO cStringIO importación
csv = cStringIO . StringIO () csv = cStringIO. StringIO () 
 nome_e_pagamento . export_to_csv_file ( csv ) nome_e_pagamento. export_to_csv_file (csv) 
 response . write ( csv . getvalue ()) respuesta. escribir (csv. GetValue ()) 
 csv . close () csv. close () 
 }} )) 

Não vou entrar em detalhes do código acima, mas para quem estranhou a presença do objeto response fica a explicação: o web2py , para aumentar a produtividade do desenvolvedor, leva a sério o conceito Don’t Repeat Yourself e, por isso, ele mesmo importa automaticamente os objetos de sua API que precisamos utilizar (nesse caso, o objeto response ). Sin entrar en detalles sobre el código anterior, pero para aquellos que odiaban a la presencia del objeto de respuesta es la explicación: la web2py para aumentar la productividad del desarrollador, lo toma en serio el concepto No Repeat Yourself y por lo tanto debe automáticamente los objetos de su API , que debe utilizarse (en este caso el objeto de respuesta).

Feito o código acima, ao entrarmos em http://localhost:8000/welcome/usuarios/tabela_de_pagamentos.csv será feito o download de um arquivo CSV. Hecho el código anterior, cuando entramos http://localhost:8000/welcome/usuarios/tabela_de_pagamentos.csv se descargará un archivo CSV. Abrindo, teremos: Apertura, tenemos:

CSV generado por la opinión de web2py ser visto en OpenOffice.org

Como disse acima, poderíamos utilizar outras extensões nas views e gerar quaisquer tipos de arquivos que quisermos com código Python . Como he dicho anteriormente, podríamos utilizar otras extensiones en los puntos de vista y generar cualquier tipo de archivos que desee con el código Python . Em uma aplicação que desenvolvi há alguns meses precisei criar views que gerassem PDF (para relatórios sob demanda) e tudo funcionou perfeitamente. En una aplicación que desarrollé hace unos meses al que tenía que crear vistas para generar PDF (para los informes a la vista) y todo funcionó a la perfección.
Espero que os exemplos acima tenham explicitado o poder e flexibilidade que esse sistema de apresentação possui. Espero que los ejemplos anteriores han explicado la potencia y flexibilidad que este sistema de presentación tiene. Dúvidas? ¿Preguntas? Entre na lista brasileira de usuários web2py e perguntem-me lá! Entre los usuarios de la lista brasileña web2py y me preguntan allí!

Marcadores: , , , , , Etiquetas: , , , , ,

Gostou? ¿Te gusta? Então: Entonces:

7 Comentário(s): 7 Comentario (s):

Blogger LG disse… LG dijo …

Muito bom. Muy bien. Gosto muito da simplicidade do web2py eo texto está muito leve e didático. Me encanta la sencillez de web2py y el texto es muy claro y didáctico.

Luiz Guilherme Luiz Guilherme

quarta-feira, 2 de junho de 2010 14h51min00s BRT Miércoles, 02 de junio 2010 14h51min00s EDT

 

Blogger Danilo Cabello disse… Danilo Cabello dijo …

Olá Álvaro, acredito que tenha alguns comentários interessantes a levantar, comentando seus bullets de cima pra baixo: Hola Alvaro, creo que tiene que levantar algunas observaciones interesantes, comentando sus balas desde arriba hacia abajo:
1. 1. Não aprender uma nova linguagem é legal, mas a idéia dos frameworks é que um designer não sabe programar, mas se esforçaria um pouquinho pra fazer o código do template, então ele aprende uma linguagem de template simples e descomplicada. No aprender un nuevo idioma es bueno, pero la idea de los marcos es que un diseñador no puede programar, pero que sufrir un poco para que el código de la plantilla, por lo que aprende una plantilla de un lenguaje sencillo y sin complicaciones.
2. 2. Eu acho interessante que seja mais rápida a execução, mas você já testou lado a lado? Me parece interesante que se ejecutan más rápido, pero he probado al lado del otro? Há linguagens de templates com velocidade absurda (comparações http://www.makotemplates.org/). Hay plantillas para los idiomas con una velocidad absurda (http://www.makotemplates.org/ comparaciones).
3. 3. A limitação vem da idéia de utilizar designers pro template, e realmente um desafio balancear o poder dado a camada de apresentação, pois com muito poder facilmente coisas que deveriam ser feitas na camada de controle é feita na apresentação. La limitación viene de la idea de utilizar pro diseñadores de plantillas, y realmente un desafío para equilibrar el poder otorgado a la capa de presentación, ya que con gran poder fácilmente las cosas que deben hacerse en la capa de control se realizan en la presentación.
4. 4. A criação de qualquer formato é garantida pelo Django e diversos outros frameworks, você não é obrigado a utilizar views em HTML. La creación de cualquier forma está garantizado por Django y varios otros marcos, no están obligados a utilizar los puntos de vista HTML.
5. 5. Não sei se isso é bom o ruim, preciso testar pra ver a vantagem, hehe, essa realmente não tenho o que falar contra. No sé si esto es bueno malo, necesitamos probar a ver la ventaja, jeje, que realmente no tiene que hablar en contra.

Outro detalhe: pode parecer estranho o uso da palavra pass, não só pode, como é estranhissimo. Otro detalle: puede parecer extraño hablar Pass, no sólo puede, pero es muy extraño. Outro dia o Luciano Ramalho comentou na lista: “Se você quer mesmo embutir código server-side no HTML eu recomendo Luciano día Ramalho otros comentarios sobre la lista: “Si usted realmente desea incrustar el código del lado del servidor en el código HTML que recomiendo
usar PHP. usar PHP. Sem sacanagem.” No es broma. “

Meus dois centavos, espero sinceramente que eles não te ofendam por contrariarem seus argumentos. Mis dos centavos, espero sinceramente que no te ofenden al contrarrestar sus argumentos.

Abraço, Un cordial saludo,

quarta-feira, 2 de junho de 2010 21h35min00s BRT Miércoles, 02 de junio 2010 21h35min00s EDT

 

Anónimo Francisco Souza disse… Francisco Souza dijo …

Adicionando ao que o Cabello comentou, também concordo com os pontos levantados por ele, mas entendo que tais características sejam decisões de design para o framework. Agregando a los Cabello, dijo, también estoy de acuerdo con los puntos planteados por él, pero entiendo que estas características son las decisiones de diseño para el marco.

Usar o pass é bem estranho mesmo, acho que talvez você eo Massimo devem até concordar nisso, mas é um efeito colateral da decisão de adotar o Python (como controlar a indentação?). Usando el mismo paso es muy extraño, creo que tal vez usted y Massimo deben estar de acuerdo a ella, pero es un efecto secundario de la decisión de adoptar Python (cómo controlar la sangría?).

Não acho a questão do desempenho tão relevante assim. No creo que el problema de rendimiento tan relevante. Eu não me adequei muito ao estilo web2py de ser, mas o framework é, sem sombra de dúvidas, uma ferramenta sensacional =) No encajo estilo muy web2py de ser, pero es el marco, sin duda, una herramienta sensacional =)

quinta-feira, 3 de junho de 2010 00h03min00s BRT , 03 de junio 2010 00h03min00s Jueves EDT

 

Anónimo Leandro Severino disse… Leandro Severino dijo …

Álvaro, Alvaro,

Parabéns pelo artigo !. Felicidades por el artículo!. Acredito que as diferenças ea diversidade de escolhas na questão de frameworks web em python só servem para mostrar todo o poder eo pontencial dessa linguagem que tanto amamos. Creo que las diferencias y la diversidad de opciones en materia de marcos web en python solo sirven para mostrar todo el poder y el potencial de Linux de esta lengua que tanto amamos. Bom, como sou suspeito para falar do Web2Py, pois uso ele para fazer os sistemas e sites dos meus clientes, fica dificil elogiar mais ainda…É isso ai !, vamos divulgar essa sensacional alternativa chamada Web2Py. Bueno, como sospecho que hablar de web2py por lo tanto, utilizar para hacer que los sistemas y sitios de mis clientes, se vuelve aún más difícil de alabanza … Sí Así es, vamos a divulgar esta alternativa sensacional llamada web2py.

Ob: Agora no segundo semestre tu vais ter mais um parceiro nessa divulgação, mas depois eu te passo maiores detalhes. Ob: Ahora en la segunda mitad va a tener otro socio en esta comunicación, pero luego me paso los detalles.

Um grande abraço, Saludos cordiales,
Leandro. Leandro.

quinta-feira, 3 de junho de 2010 11h29min00s BRT , 03 de junio 2010 11h29min00s Jueves EDT

 

Blogger Álvaro Justen “Turicas” disse… Álvaro Justen “Turicas” dijo …

Vamos às minhas opiniões. Ven a mis opiniones. :-) :-)
Danilo, sobre os pontos que você destacou: Danilo, acerca de los puntos que destacó:

> 1. > 1. Não aprender uma nova linguagem é legal, mas a idéia dos frameworks é que um designer não sabe programar, mas se esforçaria um pouquinho pra fazer o código do template, então ele aprende uma linguagem de template simples e descomplicada. No aprender un nuevo idioma es bueno, pero la idea de los marcos es que un diseñador no puede programar, pero que sufrir un poco para que el código de la plantilla, por lo que aprende una plantilla de un lenguaje sencillo y sin complicaciones.

Concordo. Estoy de acuerdo. Nesses casos você pode combinar com seu designer de resolver tudo no controller e passar apenas as variáveis para ele imprimir usando “{{=nome_da_variavel}}” ou, no máximo, ter que usar if/elif/else. En estos casos usted puede igualar su diseñador para resolver todo en el tratamiento y, sólo tiene que pasar las variables a imprimir usando “(())” nome_da_variavel = o como mucho tiene que utilizar si / elif / else.

> 2. > 2. Eu acho interessante que seja mais rápida a execução, mas você já testou lado a lado? Me parece interesante que se ejecutan más rápido, pero hemos probado al lado del otro? Há linguagens de templates com velocidade absurda (comparações http://www.makotemplates.org/). Hay plantillas para los idiomas con una velocidad absurda (http://www.makotemplates.org/ comparaciones).

Conheço a mako. Sé que el marrajo. Já li comparações sim (nunca fiz) eo web2py saiu melhor. He leído comparaciones sí (nunca se hace) y web2py hecho mejor. De qualquer forma, o web2py não *interpreta* o código da view: ele gera um código em Python puro que representa aquela view, compila para bytecode e então execute esse código – isso, sem sombra de dúvidas, é mais rápido do que interpretar a view sempre e para ambientes de produção acho necessário. De todos modos, el web2py * no * interpreta el código de la vista: genera un puro código Python que representa ese punto de vista, se compila en bytecode y después de ejecutar este código – así, sin duda, es más rápido que la interpretación ver siempre y para entornos de producción crea necesario.

> 3. > 3. A limitação vem da idéia de utilizar designers pro template, e realmente um desafio balancear o poder dado a camada de apresentação, pois com muito poder facilmente coisas que deveriam ser feitas na camada de controle é feita na apresentação. La limitación viene de la idea de utilizar pro diseñadores de plantillas, y realmente un desafío para equilibrar el poder otorgado a la capa de presentación, ya que con gran poder fácilmente las cosas que deben hacerse en la capa de control se realizan en la presentación.

Sobre os designers, já falei acima. Acerca de los diseñadores, me habló. O que minha experiência diz é que nem sempre o designer cuida do HTML/CSS etc., então se isso ficar a cargo do programador, é melhor que ele tenha mais poder na view (se o designer for realmente trabalhar na view, é só usar o que comentei acima). Lo que mi experiencia dice que no siempre es el diseñador se encarga de HTML etc / CSS. Entonces, si se deja al programador, lo mejor que tienen más poder a la vista (si el diseñador está trabajando actualmente en la vista, sólo tiene que utilizar lo que he dicho más arriba). Sobre fazer na view coisas que deveriam estar no controller, aí depende do desenvolvedor: somos adultos, certo? Acerca de hacer las cosas en la opinión de que debería estar en el controlador y luego depende del programador: somos adultos, ¿no? É o caso de eu dar a alguém uma faca (que é uma ferramenta); essa pessoa pode utilizar a ferramenta de maneira adequada (auxiliando no corte de objetos etc.) ou não (se cortando). Es el caso de que dar a alguien un cuchillo (que es una herramienta), esa persona puede utilizar la herramienta adecuada (para ayudar con objetos cortantes, etc.) O no (si es de corte). Enfim, não acho que isso seja um ponto negativo, já que o desenvolvedor *precisa* conhecer MVC. De todos modos, no creo que este es un punto negativo, ya que el desarrollador necesita saber * * MVC.

> 4. > 4. A criação de qualquer formato é garantida pelo Django e diversos outros frameworks, você não é obrigado a utilizar views em HTML. La creación de cualquier forma está garantizado por Django y varios otros marcos, no están obligados a utilizar los puntos de vista HTML.

Mesmo JPEG, PDF etc. Incluso JPEG, PDF, etc. (na view)? (Teniendo en cuenta)? Sem fazer nenhum processamento com relação a criar o JPEG, PDF etc. Sin realizar ninguna operación con respecto a la creación de JPEG, PDF, etc. no controller? en el controlador?

> 5. > 5. Não sei se isso é bom o ruim, preciso testar pra ver a vantagem, hehe, essa realmente não tenho o que falar contra. No sé si esto es bueno malo, necesitamos probar a ver la ventaja, jeje, que realmente no tiene que hablar en contra.

É bom. Es bueno. :-) Você pode retornar os posts de um blog e exibí-los na index.html de seu site ou no feed.rss – mesmo controller, duas views. :-) Usted puede regresar a los puestos de un blog y mostrarlos en su sitio o index.html en feed.rss – mismo controlador, dos puntos de vista.

> Outro detalhe: pode parecer estranho o uso da palavra pass, não só pode, como é estranhissimo. > Otro detalle: puede parecer extraño hablar Pass, no sólo puede, pero es muy extraño. Outro dia o Luciano Ramalho comentou na lista: “Se você quer mesmo embutir código server-side no HTML eu recomendo usar PHP. Sem sacanagem.” Luciano día Ramalho comentó otro de la lista: “Si usted realmente desea incrustar el código de servidor en el código HTML recomiendo el uso de PHP. En serio.”

Ok, o uso do pass é realmente estranho, porém, para obter as vantagens acima, acho necessário – já que seria *muito ruim* ter que se preocupar com endentação dentro da view. Ok, con el pase es realmente extraño, sin embargo, para obtener las ventajas mencionadas, me parece necesario – como lo sería * muy * malo tener que preocuparse de sangría en la vista.
Sobre o que Luciano falou, não concordo, porque o web2py não tem só a camada de view: tem o model, controller e diversas outras ferramentas que auxiliam o desenvolvedor. Luciano habló sobre lo que no estoy de acuerdo, porque web2py no es sólo la capa de vista: es el modelo, controlador y otras herramientas que ayudan a los desarrolladores. Nesse caso, caímos novamente na briga “view poderosa versus view sem poder” – e aí entram minhas duas opiniões acima (designer e faca). En este caso, caemos de nuevo en la pelea “a la vista en comparación con vistas de gran alcance sin poder” – y aquí vienen mis dos comentarios anteriores (el creador y cuchillo).

> Meus dois centavos, espero sinceramente que eles não te ofendam por contrariarem seus argumentos. > Mis dos centavos, espero sinceramente que no te ofenden al contrarrestar sus argumentos.

Ofender? Ofender? Claro que não! Por supuesto que no! Estamos aqui para expressar nossas opiniões. Estamos aquí para expresar nuestras opiniones. ;-) ;-)

Abraços. Abrazos.

quinta-feira, 3 de junho de 2010 13h33min00s BRT , 03 de junio 2010 13h33min00s Jueves EDT

 

Blogger Arkanjuca disse… Arkanjuca dijo …

Bem legal o seu post, com alguns exemplos eu já entendi todo o propósito do web2py e como ele ataca os problemas comuns a todos. ¿Muy bueno tu post con algunos ejemplos que he entendido el propósito de web2py y cómo se aborden los problemas comunes a todos.

Conheço pessoas que gostam de poder na view e gente que não gosta, bom, oque eu não gosto é de gente que usa view poderosa de forma porca, e não da view em si ser poderosa ;) Sé que la gente que les gusta el poder a la vista y no nos gusta, bueno, lo que me gusta es la gente ve que utiliza la tuerca de forma poderosa, y no el punto de vista es de gran alcance;)

Uma pergunta/sugestão, se o pass é necessário dessa forma, porque não incluir ele automaticamente na compilação da view? Una pregunta / sugerencia, si tiene que pasar por este camino, ¿por qué no incluir automáticamente en la compilación de vista?

sexta-feira, 4 de junho de 2010 09h28min00s BRT Viernes, 04 de junio 2010 09h28min00s EDT

 

Blogger Álvaro Justen “Turicas” disse… Álvaro Justen “Turicas” dijo …

Arkanjuca, Arkanjuca,
o problema é que não existe uma forma de saber onde você vai colocar o “pass”. el problema es que no hay forma de saber donde se coloque el “pase”. Por exemplo: Por ejemplo:

for a in b: para a en b:
if a > 10: si a> 10:
a = 20 a = 20
a = 30 a = 30
c = 50 c = 50

Para esse mesmo código acima, poderíamos ter os dois “pass” (do if e do for) colocados em vários lugares – ea colocação em lugares diferentes altera totalmente a lógica. Por este mismo código anterior, tenemos tanto “pasar” (el si y es) colocados en diferentes lugares – y la puesta en lugar cambios lógica completamente diferente.
Se o web2py entendesse endentação dentro da view, você não precisaria usar o pass, porém usar endentação dentro da view seria algo bastante ruim de se manter/ler, já que dependendo de qual linguagem você esteja usando na view (HTML, CSS etc.), os espaços podem fazer a diferença. Si la sangría web2py entenderse en el punto de vista, no es necesario usar el pase, pero el sangrado uso en el punto de vista sería algo bastante malo para mantener / leer, ya que dependiendo del idioma que está utilizando la vista (HTML, CSS, etc.) , los espacios pueden hacer la diferencia.

0

0
 

Leave a Reply