Domanda

Django dispone di tag modello per generare markup HTML comune?Ad esempio, so che posso ottenere un URL utilizzando

{% url mapper.views.foo %}

Ma questo mi dà solo l'URL e non il codice HTML per creare il collegamento.Django ha qualcosa di simile all'helper link_to di Rails?ho trovato aiutanti di django ma poiché questa è una cosa comune, ho pensato che Django avrebbe avuto qualcosa di integrato.

È stato utile?

Soluzione

No, non è così.

James Bennet ha risposto a domanda simile qualche tempo fa, riguardo agli helper JavaScript integrati di Rails.

Suo Veramente è improbabile che Django disponga mai della funzionalità di "aiuto" incorporata.Il motivo, se ho capito bene, ha a che fare con la filosofia fondamentale di Django di mantenere le cose debolmente accoppiato.Avere questo tipo di funzionalità di supporto integrata porta ad accoppiare Django con una libreria JavaScript specifica o (nel tuo caso) un tipo di documento html.

PER ESEMPIO.Cosa succede se/quando HTML 5 viene finalmente implementato e Django genera markup HTML 4 o XHTML?

Detto questo, il framework dei template di Django è davvero flessibile e non sarebbe molto difficile farlo scrivi i tuoi tag/filtri ha fatto quello che volevi.Anch'io sono principalmente un designer e sono riuscito a mettere insieme un paio di tag personalizzati che hanno funzionato a meraviglia.

Altri suggerimenti

Lo scopo degli helper non è, come altri suggeriscono, aiutare gli sviluppatori che non sanno scrivere HTML.Lo scopo è incapsulare funzionalità comuni, in modo da non dover scrivere la stessa cosa mille volte, e fornire un'unica posizione in cui modificare l'HTML comune utilizzato nella tua app.

È lo stesso motivo per cui i modelli e SSI sono utili: non perché le persone non sappiano come scrivere l'HTML nelle intestazioni e nei piè di pagina, ma a volte è necessario scriverlo solo una volta.

PER ESEMPIO.Cosa succede se/quando HTML 5 è finalmente implementato e Django sta generando HTML 4 o XHTML Markup?

La stessa cosa che accade quando viene implementato HTML 5 e tutti i tuoi modelli sono scritti in HTML ripetitivo, tranne che in modo molto più semplice.

Gli altri post hanno già risposto alla domanda, collegandosi ai documenti su tag del modello personalizzato;puoi utilizzare tag e filtri per crearne di tuoi, ma no, non ce ne sono integrati.

non sembra che siano integrati, ma ecco un paio di frammenti.sembra che sarebbe abbastanza semplice creare questi helper:

http://www.djangosnippets.org/snippets/441/

Ecco un elenco di tutti i tag e filtri dei modelli integrati in Django.Il core di Django non ha tanti helper HTML quanto Rails, perché i contributori di Django presumono che lo sviluppatore web conosca molto bene l'HTML.Come affermato da SaturdayPalace, è molto improbabile che gli helper AJAX vengano aggiunti a Django, perché porterebbe ad accoppiare Django con una libreria JavaScript specifica.

È molto facile scrivi i tuoi tag modello in Django (spesso basta definire una sola funzione, simile a Rails).Potresti reimplementare la maggior parte degli aiutanti di Rails in Django nel giro di un giorno o due.

Scommetto che se ci fosse qualche consenso su ciò che è HTML comune, ci sarebbe anche un modulo di supporto, solo per completezza (o perché altri ce l'hanno).;)

Oltre a ciò, il sistema di template Django è pensato principalmente per gli utenti HTML, che sanno già come scrivere p, img E a tag e non ne hanno bisogno aiutanti per quello.Dall'altro lato ci sono gli sviluppatori Python, che scrivono codice e non si preoccupano se la variabile che inseriscono nel contesto è racchiusa div o da span (perfetto esempio di separazione degli interessi paradigma).Se hai bisogno di unire questi due mondi, devi farlo da solo (o cercare il codice di altri).

Questo non risponderà direttamente alla domanda, ma perché non usarlo <a href="{% url mapper.views.foo %}">foo</a> nel modello allora?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top