2011-07-04 33 views
12

ý tưởng là có nhiều tiện ích trên trang và bao gồm tất cả các tệp js và css cần thiết tạo thành 'tiện ích' này (thật dễ dàng để quản lý tệp theo cách này) . Tệp trùng lặp không phải là vấn đề. mẫu của mỗi widget được đưa vào một trang bằng cách {% bao gồm%} Từ bên trong mẫu phụ tùng của tôi đang cố gắng để thêm nội dung vào khối của cha mẹ:mẫu django - sử dụng block.super trong mẫu đã bao gồm thất bại (ngoại lệ)

PHỤ HUYNH:

{%block js%} 
{%endblock%} 

WIDGET

{%block js%} 
    {{block.super}} 
    ///my widget spectyfic JS 
{%end block%} 

điều này gây ra lỗi với {{block.super}}: Caught AttributeError while rendering: 'BlockNode' object has no attribute 'context'

Tôi không chắc chắn cách nào khác để mở rộng khối ... Có vẻ như 's không thể trong django ... bất kỳ ý tưởng? Xác định nhiều khối sẽ không làm việc như chúng ta không biết có bao nhiêu vật dụng khác nhau với những gì tên chúng ta sẽ có trên mỗi trang ... (và nó không phải lo lắng của nemplate)

+1

Xin chào robertzp, tôi cũng đang gặp phải vấn đề tương tự. Bạn đã có giải pháp chưa? Xin hãy giúp tôi về điều này. – PythonDev

Trả lời

14

Từ the docs:

Note

thẻ include nên được coi là một thực hiện "render subtemplate này và bao gồm HTML", chứ không phải là "phân tích subtemplate này và bao gồm nội dung của nó như thể nó là một phần của cha mẹ". Điều này có nghĩa là không có trạng thái chia sẻ giữa các mẫu được bao gồm - mỗi mẫu bao gồm là một quá trình kết xuất hoàn toàn độc lập.

Nếu bạn muốn block.super để hoạt động thì bạn cần sử dụng extends thay thế.

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