2010-09-18 28 views
10

Tôi đang làm việc trên dự án django (lần đầu tiên) và trong một lượt xem, tôi có đoạn mã html tinh vi với JS được dệt trong đó. Tôi muốn sử dụng lại "thành phần" này ở một nơi khác trong cùng một chế độ xem. Có cách nào để đạt được điều này không? Vui lòng cho tôi biết nếu thiết kế này có lỗi để bắt đầu không?Làm cách nào để sử dụng lại đoạn mã HTML trong chế độ xem django

+1

Bằng "chế độ xem", bạn có nghĩ mẫu không? – dekomote

+1

Bạn có thể cung cấp một số mã không? –

Trả lời

15

Sử dụng {% include '/my/common/template.html' %} templatetag.

Tải mẫu và hiển thị mẫu với ngữ cảnh hiện tại. Đây là cách của "bao gồm" các mẫu khác trong mẫu .

Tên mẫu có thể là một biến số hoặc một mã được mã hóa cứng (được trích dẫn) , theo một hoặc hai dấu ngoặc đơn .

+0

chính xác những gì tôi đang tìm kiếm .. cảm ơn! – daniyalzade

2

Không chắc chắn, nếu bạn muốn sử dụng lại HTML của mình trong các mẫu khác nhau (được hiển thị bởi các chế độ xem khác nhau). Nếu vậy, nhìn vào Django's template inheritance cơ chế:

Các mạnh nhất - và do đó phức tạp nhất - một phần của mẫu động cơ của Django là mẫu thừa kế. Thừa kế mẫu cho phép bạn tạo mẫu "khung" cơ sở chứa tất cả các phần tử phổ biến trên trang web của bạn và xác định các khối mà các mẫu con có thể ghi đè.

1

Bạn nên thử các thẻ mẫu tùy chỉnh Django. Bằng cách này, bạn sẽ giữ các đoạn mã của bạn trong một tệp bên ngoài và sau đó gọi chúng dễ dàng bằng một cái gì đó như {{ your_custom_tag }}. Đó là một phương pháp rất thuận tiện để làm việc với các khối có thể tái sử dụng của đánh dấu xhtml. Bạn thậm chí có thể sử dụng đối số với các thẻ tùy chỉnh này, chẳng hạn như {{ your_custom_tag|image:"logo.png" }}. Bạn có thể tìm hiểu thêm về thẻ tùy chỉnh here.

7

Tôi biết nó cũ nhưng có thể ai đó sẽ sử dụng câu trả lời này.

Ngoài ra còn có inclusion tag. Nó giống như thẻ include, chỉ có bạn mới có thể truyền các đối số và xử lý nó như là một mẫu riêng biệt.

Đặt này trong my_app/templatetags/my_templatetags.py:

@register.inclusion_tag('my_snippet.html') 
def my_snippet(url, title): 
    return {'url': url, 'title': title} 

và sau đó my_snippet.html có thể là:

<a href="{{ url }}">{{ title }}</a> 

sau đó, sử dụng đoạn mã này trong các mẫu của bạn:

{% load my_templatetags %} 
{% my_snippet "/homepage/" "Homepage" %} 

Thông tin thêm : https://docs.djangoproject.com/en/dev/howto/custom-template-tags/#howto-custom-template-tags-inclusion-tags

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