Tôi đang cố triển khai ứng dụng django sekizai. Nó đang sao chép các tệp js mà tôi đang thêm.Thẻ django sekizai {% addtoblock%} không hoạt động đúng cách
cơ sở mẫu:
{% load sekizai_tags %}
...
{% render_block "my_js" %}
mẫu mà đang sử dụng căn cứ này:
{% load sekizai_tags %}
<div id="a1" >
{% addtoblock "my_js" %}
<script type="text/javascript" src="{{ MEDIA_URL }}js/my_js.js"></script>
{% endaddtoblock %}
</div>
{% addtoblock "my_js" %}
<script type="text/javascript" src="{{ MEDIA_URL }}js/my_js.js"></script>
{% endaddtoblock %}
Bây giờ đây mẫu được kết xuất đã trả twice.But khi tôi cố gắng thêm cùng một kịch bản trong div nó wasn không được sao chép. Sẽ đánh giá cao nếu ai đó có thể làm sáng tỏ điều này!
Ngoài ra khi tôi cố gắng sử dụng {% addtoblock%} trong mẫu được hiển thị bằng thẻ mẫu, tập lệnh bị thiếu (Nó không được bao gồm hoặc không nằm trong mẫu đó).
Lưu ý: Thẻ mẫu, render_block
và addtoblock
, là từ gói django-sekizai.
tốt tôi có thể tìm ra lý do đằng sau việc sao chép kịch bản của tôi đó là sự khác biệt trong thụt lề của kịch bản trong và ngoài div. {% addtoblock%} tag dường như không xóa các khoảng trắng. Vì vậy, giải pháp cho câu hỏi đầu tiên của tôi là một trong những ngớ ngẩn như sau: {% tải sekizai_tags%}
Cũng trong mẫu của thẻ mẫu tùy chỉnh, các tập lệnh đã biến mất. Theo [django-sekizai-docs] (https://github.com/ojii/django-sekizai/blob/master/docs/restrictions.rst), bắt buộc phải sử dụng SekizaiContext hoặc RequestContext và bộ xử lý ngữ cảnh sekizai nhưng tôi tìm thấy giải pháp thay thế nếu bạn muốn giảm kích thước của bối cảnh mẫu của mình (ví dụ: cont = {}) sử dụng tham số này ['SEKIZAI_CONTENT_HOLDER'] = context ['SEKIZAI_CONTENT_HOLDER']. Với cách giải quyết này bạn không cần sử dụng RequestContext và chỉ bộ xử lý ngữ cảnh sekezai là đủ. –