2008-09-14 30 views
23

Django có bất kỳ thẻ mẫu nào để tạo đánh dấu HTML phổ biến không? Ví dụ: tôi biết rằng tôi có thể nhận url bằng cách sử dụngDjango có người trợ giúp HTML không?

{% url mapper.views.foo %} 

Nhưng điều đó chỉ cung cấp cho tôi URL chứ không phải mã HTML để tạo liên kết. Django có bất cứ điều gì tương tự như helper link_to Rails? Tôi tìm thấy django-helpers nhưng vì đây là một điều phổ biến tôi nghĩ Django sẽ có một cái gì đó được xây dựng trong.

Trả lời

26

Không nó không.

James Bennett trả lời một similar question một lúc trước, về trình trợ giúp JavaScript tích hợp của Rails.

Đó là thực sự không chắc rằng Django sẽ có chức năng 'trợ giúp' tích hợp sẵn. Lý do, nếu tôi hiểu đúng, phải làm với triết lý cốt lõi của Django về việc giữ mọi thứ loosely coupled. Có loại chức năng trợ giúp được xây dựng trong dẫn đến ghép nối Django với một thư viện JavaScript cụ thể hoặc (trong trường hợp của bạn) loại tài liệu html.

EG. Điều gì sẽ xảy ra nếu/khi HTML 5 cuối cùng được triển khai và Django đang tạo đánh dấu HTML 4 hoặc XHTML?

Có nói rằng, khuôn mẫu mẫu của Django thực sự linh hoạt và sẽ không khó khăn lắm nếu bạn muốn. Tôi chủ yếu là một nhà thiết kế bản thân mình, và tôi đã có thể đặt cùng một vài thẻ tùy chỉnh hoạt động như một sự quyến rũ.

+1

Điều này giống như một sự hiểu lầm về những người trợ giúp Rails được sử dụng, họ không nhất thiết phải làm gì với JavaScript hoặc Ajax cả. Hướng dẫn đường ray http://guides.rubyonrails.org/getting_started.html mô tả chúng như cung cấp "các đoạn mã nhỏ có thể sử dụng lại cho các chế độ xem". Một bài đăng trên blog mà tôi đã tìm thấy http://railspikes.com/2008/8/22/how-to-fix-your-rails-helpers đề cập đến chúng dưới dạng trình tạo đánh dấu. – Sam

+0

Tôi đã sử dụng django trong 4 năm, và đường ray cho 1. Rails giúp đỡ chỉ là phím tắt và tôi không bao giờ cảm thấy nhu cầu của họ trong khi sử dụng Django. – nemesisdesign

2

nó không giống như chúng được tích hợp sẵn nhưng đây là một vài đoạn trích. có vẻ như nó muốn được khá dễ dàng để tạo ra những người giúp đỡ:

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

1

Đây là list of all template tags and filters built into Django. Django lõi không có nhiều người trợ giúp HTML như Rails, bởi vì những người đóng góp Django cho rằng nhà phát triển web biết HTML rất tốt. Như đã nói bởi saturdaypalace, rất khó cho những người trợ giúp AJAX được thêm vào Django, bởi vì nó sẽ dẫn đến việc ghép nối Django với một thư viện JavaScript cụ thể.

Rất dễ dàng để write your own template tags ở Django (thường bạn chỉ cần xác định một hàm, tương tự với Rails). Bạn có thể reimplement hầu hết những người giúp đỡ Rails ở Django trong một hoặc hai ngày.

-1

Điều này sẽ không trả lời trực tiếp cho câu hỏi, nhưng tại sao không sử dụng <a href="{% url mapper.views.foo %}">foo</a> trong mẫu?

+1

Các nhà phát triển Ruby/Rails cos lười hơn Pythonistas – nemesisdesign

0

Tôi đặt cược nếu có bất kỳ sự đồng ý nào là common html, cũng sẽ có mô-đun người trợ giúp, chỉ để hoàn thành (hoặc vì những người khác có nó). ;)

Khác hơn thế, Django hệ thống mẫu được làm chủ yếu cho những người HTML, người đã biết làm thế nào để viết p, imga thẻ và không cần bất kỳ người giúp đỡ cho điều đó. Ở phía bên kia có các nhà phát triển Python, người viết mã và không quan tâm nếu biến họ đưa vào ngữ cảnh được bao gồm bởi div hoặc bằng span (ví dụ hoàn hảo về việc tách mối quan tâm mô hình). Nếu bạn cần có hai thế giới này để tham gia, bạn phải tự mình làm điều đó (hoặc tìm kiếm mã của người khác).

21

Mục đích của người trợ giúp không phải là, như những người khác ở đây ngụ ý, để giúp các nhà phát triển không biết cách viết HTML. Mục đích là để đóng gói chức năng phổ biến - vì vậy bạn không cần phải viết cùng một điều một nghìn lần - và để cung cấp một nơi duy nhất để chỉnh sửa HTML phổ biến được sử dụng trong suốt ứng dụng của bạn.

Đó là lý do mẫu giống nhau và SSI có ích - không phải vì người ta không biết làm thế nào để viết mã HTML ở đầu và cuối trang của họ, nhưng đôi khi bạn muốn viết nó chỉ một lần.

EG. Điều gì sẽ xảy ra nếu/khi HTML 5 là cuối cùng được triển khai và Django là tạo đánh dấu HTML 4 hoặc XHTML?

Điều tương tự cũng xảy ra khi HTML 5 được triển khai và tất cả các mẫu của bạn được viết bằng HTML lặp lại, ngoại trừ dễ dàng hơn nhiều.

Các bài đăng khác đã trả lời câu hỏi, liên kết với tài liệu trên custom template tags; bạn có thể sử dụng thẻ và bộ lọc để xây dựng của riêng bạn, nhưng không, không có bất kỳ tích hợp nào.

Các vấn đề liên quan