2008-09-14 65 views
23

Django是否有任何模板標籤來生成常見的HTML標記?例如,我知道我可以使用網址Django有HTML助手嗎?

{% url mapper.views.foo %} 

但是,這隻會給我的URL而不是HTML代碼來創建鏈接。 Django是否有類似於Rails的link_to helper?我發現django-helpers,但由於這是一個常見的事情,我認爲Django會有內置的東西。

回答

26

不,它不需要。

James Bennett回答了一段similar question,關於Rails的內置JavaScript助手。

這是真的不太可能Django會有內置的'helper'功能。如果我理解正確,理由是與Django的核心理念loosely coupled有關。內置這種輔助功能會導致將Django與特定的JavaScript庫或(在您的情況下)html文檔類型耦合。

EG。如果/最終實現HTML 5並且Django生成HTML 4或XHTML標記,會發生什麼情況?

話雖如此,Django的模板框架是非常靈活的,並且write your own tags/filters不會非常難以達到您想要的效果。我大多是一名設計師,而且我已經能夠組裝一對像魅力一樣工作的定製標籤。

+1

這看起來像是誤解了Rails助手的用法,它們並不一定與JavaScript或Ajax。導軌指南http://guides.rubyonrails.org/getting_started.html將它們描述爲提供「視圖的可重用代碼的小片段」。我發現一篇博客文章http://railspikes.com/2008/8/22/how-to-fix-your-rails-helpers將它們稱爲標記生成器。 – Sam 2011-02-25 11:29:04

+0

我一直在使用django 4年,rails for 1. rails helpers只是捷徑,我從來沒有覺得他們需要使用Django。 – nemesisdesign 2013-05-20 09:55:06

1

這是list of all template tags and filters built into Django。 Django核心沒有像Rails那樣多的HTML助手,因爲Django貢獻者認爲web開發人員非常瞭解HTML。正如saturdaypalace所說,AJAX助手很少會被添加到Django中,因爲它會導致Django與特定的JavaScript庫耦合。

在Django中很容易找到write your own template tags(通常您只需要定義一個函數,類似於Rails)。您可以在一兩天內重新實現Django中的大部分Rails幫助器。

-1

這不會直接回答這個問題,但爲什麼不在模板中使用<a href="{% url mapper.views.foo %}">foo</a>呢?

0

我敢打賭,如果會有什麼常見的HTML的任何同意,也會有助手模塊,只是爲了完整性(或因爲其他人有它)。 ;)

除此之外,Django的模板系統主要是由對HTML的人,誰已經知道如何寫pimga標籤,不需要任何助手了點。另一方面,Python開發人員編寫代碼,不關心他們放在上下文中的變量是否由divspan範例的完美示例)所包圍。如果你需要加入這兩個世界,你可以自己去做(或者尋找其他的代碼)。

21

幫助者的目的不像其他人暗示的那樣幫助那些不知道如何編寫HTML的開發者。其目的是封裝常用功能 - 因此您不需要千次編寫相同的內容 - 並提供一個位置來編輯整個應用程序使用的常用HTML。

這與模板和SSI很有用的原因相同 - 不是因爲人們不知道如何在頁眉和頁腳中編寫HTML,而是有時只想寫一次。

EG。如果/當HTML 5最終實現爲 並且Django爲 會生成HTML 4或XHTML標記時會發生什麼情況?

在實現HTML 5並且所有模板都用重複HTML編寫時會發生同樣的情況,除非更容易。

其他帖子已經回答了問題,鏈接到custom template tags上的文檔;你可以使用標籤和過濾器來構建你自己的,但不,沒有任何內建的。