2008-09-14 13 views
23

¿Tiene Django alguna etiqueta de plantilla para generar un marcado HTML común? Por ejemplo, sé que puedo obtener una URL usando¿Tiene Django ayuda HTML?

{% url mapper.views.foo %} 

Pero eso sólo me da la URL y no el código HTML para crear el enlace. ¿Tiene Django algo similar al enlace de Rails para ayudar? Encontré django-helpers pero como esto es algo común, pensé que Django tendría algo incorporado.

Respuesta

26

No, no lo hace.

James Bennett respondió hace un tiempo a similar question, con respecto a los complementos de JavaScript de Rails.

Es realmente poco probable que Django tenga alguna vez la funcionalidad 'ayudante' incorporada. La razón, si lo entiendo correctamente, tiene que ver con la filosofía central de Django de mantener las cosas loosely coupled. Tener ese tipo de funcionalidad de ayuda integrada permite conectar Django con una biblioteca específica de JavaScript o (en su caso) tipo de documento html.

EG. ¿Qué sucede si/cuando HTML 5 finalmente se implementa y Django genera código HTML 4 o XHTML?

Dicho esto, el marco de plantillas de Django es realmente flexible, y no sería terriblemente difícil que write your own tags/filters hiciera lo que usted quería. Principalmente soy diseñadora y he podido juntar un par de etiquetas personalizadas que funcionan como un amuleto.

+1

Esto parece un malentendido de para qué se usan los ayudantes de Rails, no necesariamente tienen nada que ver con JavaScript o Ajax en absoluto. Las guías de rieles http://guides.rubyonrails.org/getting_started.html describen que proporcionan "pequeños fragmentos de código reutilizable para vistas". Una publicación de blog que encontré http://railspikes.com/2008/8/22/how-to-fix-your-rails-helpers se refiere a ellos como generadores de marcado. – Sam

+0

uso django desde hace 4 años, y rieles para 1. Los ayudantes de rieles son solo accesos directos y nunca sentí su necesidad mientras usaba Django. – nemesisdesign

1

Aquí hay un list of all template tags and filters built into Django. Django core no tiene tantos ayudantes de HTML como Rails, porque los colaboradores de Django supusieron que el desarrollador web conoce HTML muy bien. Como se indicó en saturdaypalace, es muy poco probable que los asistentes de AJAX se agreguen a Django, ya que conducirían a acoplar a Django con una biblioteca de JavaScript específica.

En Django es muy fácil write your own template tags (a menudo solo necesita definir una función, similar a Rails). Podría volver a implementar la mayoría de los ayudantes de Rails en Django durante uno o dos días.

-1

Esto no responderá directamente a la pregunta, pero ¿por qué no usar <a href="{% url mapper.views.foo %}">foo</a> en la plantilla?

+1

cos Los desarrolladores de Ruby/Rails son más perezosos que los Pythonistas – nemesisdesign

0

Apuesto a que si hubiera algún consentimiento de lo que es html común, también habría módulo de ayuda, solo para completar (o porque otros lo tienen). ;)

Aparte de eso, el sistema de plantillas de Django se hace sobre todo para las personas HTML, que ya saben cómo escribir p, img y a etiquetas y que no necesitan ningún ayudantes para eso. Por otro lado, hay desarrolladores de Python que escriben código y no les importa si la variable que ponen en contexto está encerrada por div o por span (ejemplo perfecto de separación del paradigma de preocupaciones). Si necesita unir estos dos mundos, hágalo usted mismo (o busque el código de otro).

21

El propósito de los helpers no es, como otros implican, ayudar a los desarrolladores que no saben cómo escribir HTML. El objetivo es encapsular funcionalidades comunes, por lo que no necesita escribir lo mismo mil veces, y proporcionar un lugar único para editar el HTML común utilizado en su aplicación.

Es la misma razón por la que las plantillas y SSI son útiles, no porque la gente no sepa cómo escribir el código HTML en sus encabezados y pies de página, sino que a veces desea escribirlo solo una vez.

EG. ¿Qué sucede si/cuando HTML 5 es finalmente implementado y Django es generando HTML 4 o marcado XHTML?

Lo mismo que ocurre cuando se implementa HTML 5 y todas sus plantillas están escritas en HTML repetitivo, excepto que es mucho más fácil.

Las otras publicaciones ya han respondido la pregunta, vinculándose a los documentos en custom template tags; puede usar etiquetas y filtros para construir el suyo propio, pero no, no hay ninguno incorporado.

Cuestiones relacionadas