2010-12-06 7 views
7

Quiero decir que entiendo que estas plantillas están dirigidas a diseñadores y otras personas con menos conocimiento del código, pero para los desarrolladores creo que el lenguaje de plantilla es solo una molestia. Necesito volver a aprender cómo hacer cosas muy simples como repetir a través de diccionarios o listas que paso a la plantilla, y ni siquiera parece funcionar muy bien. Todavía tengo problemas para que funcione la notación "punto" completa como era de esperar (por ejemplo, {{mydict.dictkey}} dentro de un bucle for no funciona: S - podría preguntar esto como una pregunta separada) , y no veo por qué no sería posible usar el código python en un sistema de plantillas. En particular, creo que si las plantillas son sencillas, entonces el nivel del código python que debería emplearse en estas plantillas sería de un calibre no más complicado que el lenguaje de plantillas actual. Así que estos píos de diseño no tendrían más problemas para aprender tanto Python que aprenderían el lenguaje de plantillas de Django (y hay más lugares donde puedes ir con este conocimiento de python básico en comparación con DTL) y la ventaja adicional sería que las personas que Ya sé que Python estaría en un territorio familiar con toda la sintaxis y poder usual disponible para ellos y puede simplemente ponerse en marcha.¿Por qué las plantillas django simplemente usan el código python?

¿Echo de menos algo? Si es así, le ruego a django noob y me gustaría que me iluminase sobre los muchos méritos del sistema actual. Pero, de lo contrario, ¿hay alguna recomendación sobre otros sistemas de plantillas que pueda ser más de lo que estoy buscando?

+0

Respuesta corta: para los diseñadores de web/plantilla que los redactores de framework visualizan no necesariamente vienen con un fondo de programación y que con toda probabilidad trabajarán juntos, en paralelo, con los programadores de aplicaciones web para producir todo el sitio web. – Santa

+1

parece que hay un lugar para este tipo de sistema de plantillas. Veo que todos aquí explican esto por "los diseñadores son malvados", "separación de capas" cuando en realidad esto es más bien limitante y agrega otro marcado "confuso" a la mezcla para cada parte relacionada con la definición y construcción de plantillas. En realidad, sería más útil limitar dicha separación con la regla de organización y dejar que las plantillas sean clases regulares que hereden de la plantilla principal donde se podrían usar tanto el código marcado como el código python. –

+0

sí, no estoy del todo convencido (como señalo en mi comentario en la respuesta de Rafe), pero me reservaré mi juicio hasta que tenga más experiencia con estas cosas :). ¡Gracias! – mindthief

Respuesta

10

La razón que la mayoría de las personas dan para lenguajes de plantillas limitadas es que no desean mezclar la lógica de negocios de su aplicación con su presentación (eso no funcionaría bien con la filosofía de MVC; estoy seguro de que con Django usted comprende los beneficios de esto).

Daniel Greenfeld escribió an article a few days ago explaining why he likes "stupid template languages", y muchas personas escribieron respuestas (consulte los últimos días en Planet Python). Si lees lo que Daniel escribió y cómo otros respondieron, obtendrás una idea de algunos de los argumentos a favor y en contra de permitir que los lenguajes de plantilla usen Python.

+3

+1 para la separación: esa es la verdadera razón, es demasiado tentador poner las reglas de su negocio en su HTML si no tiene un sistema de plantillas _sin poderosas_ que su idioma principal ... mientras que no tengo mucho amor por MVC específicamente, la separación de la lógica de la presentación es un requisito previo para el código cuerdo – tobyodavies

+0

hmm que tiene sentido. Entonces, ¿significa esto que lo que intento hacer no es posible dentro de una plantilla? Describo el problema en http://stackoverflow.com/questions/4363032/how-to-use-django-template-dot-notation-inside-a-for-loop – mindthief

+3

@mindthief: Posible (según mi respuesta a eso pregunta), pero no incorporado. Esto desalienta todo lo "demasiado complejo" que entra en la plantilla, forzando una mejor separación de lógica y presentación. Depende de usted decidir si prefiere más potencia (que ofrece más flexibilidad a costa de una mayor complejidad y la responsabilidad de no dispararse en el pie) o no (que ofrece una separación forzada de la lógica y el contenido). – Cameron

2

No olvide que no está limitado al lenguaje de plantillas de Django. Eres libre de usar el sistema de creación de plantillas que quieras en tus funciones de visualización. Sin embargo, si desea crear el HTML para devolver desde su función de vista está bien. Hay muchas implementaciones de plantillas en el mundo de Python: elija la que más le convenga y úselo.

1

Separación de preocupaciones.

El diseñador does design. Desarrollador hace desarrollo. Las plantillas son escritas por los diseñadores.

El diseño y el desarrollo son áreas de trabajo independientes y diferentes manejadas por diferentes personas.

Supongo que tener el código de la plantilla en python funcionaría muy bien si uno es un desarrollador y su cónyuge es un diseñador. De lo contrario, deje que cada uno haga su trabajo, con la menor interferencia.

+0

sí, tal vez si fuera un diseñador, la notación de puntos sería menos intimidante (y, por lo tanto, quizás más exitosa en el alcance) que aprender Python elemental. ¡Gracias! – mindthief

Cuestiones relacionadas