ওভাররাইটের পরিবর্তে আমরা কি একটি block% ব্লক% to এ যুক্ত করতে পারি?


116

আমার কোর.এইচটিএমএলে আমার কাছে জাভাস্ক্রিপ্ট লেবেলযুক্ত একটি ব্লক রয়েছে। আমি যদি সমস্ত কিছু ওভাররাইট না করে এই ব্লকে আরও লাইন যুক্ত করতে পারি তবে দুর্দান্ত হবে।

উত্তর:



9

block.superকোনও টেমপ্লেট প্রসারিত করার সময় সূক্ষ্ম কাজ করে তবে কোনওটি অন্তর্ভুক্ত করার পরে যেমন নয়:

{% extends "base.html" %} vs. {% include "partial.html" %}

বলুন আপনি নিজের পৃষ্ঠার মাঝখানে কোনও টেম্পলেট অন্তর্ভুক্ত করতে চান এবং পৃষ্ঠার শেষে একটি ব্লকে কিছু জাভাস্ক্রিপ্ট যুক্ত করতেও এটি চান: block.superঅন্তর্ভুক্ত টেমপ্লেটে কল করা ক্র্যাশ হয়ে যাবে।

Cf. জ্যাঙ্গো # 7324 , # 12008 , # 13399 এবং ডকুমেন্টেশনের সম্পর্কিত আপডেট ইস্যু করে । Cf. ট্যাগ নোট অন্তর্ভুক্ত :

অন্তর্ভুক্ত ট্যাগটিকে "এই সাবটেম্পলেটটি সরবরাহ করুন এবং এইচটিএমএল অন্তর্ভুক্ত করুন" এর বাস্তবায়ন হিসাবে বিবেচনা করা উচিত, "এই সাবটেমলেটটি পার্স করা এবং এটির মূল বিষয়বস্তু হিসাবে এটির বিষয়বস্তু অন্তর্ভুক্ত করা উচিত নয়"। এর অর্থ হ'ল অন্তর্ভুক্ত টেম্পলেটগুলির মধ্যে ভাগ করার কোনও রাজ্য নেই - প্রতিটি অন্তর্ভুক্ত হ'ল সম্পূর্ণ স্বাধীন রেন্ডারিং প্রক্রিয়া।

ব্লকগুলি অন্তর্ভুক্ত করার আগে তাদের মূল্যায়ন করা হয়। এর অর্থ হ'ল যে টেমপ্লেটটিতে অন্যের ব্লক অন্তর্ভুক্ত রয়েছে সেগুলিতে এমন ব্লক থাকবে যা ইতিমধ্যে মূল্যায়ন ও রেন্ডার করা হয়েছে - যে ব্লকগুলি ওভাররাইড করা যায় না, উদাহরণস্বরূপ, একটি প্রসারিত টেম্পলেট।

সেক্ষেত্রে আমি জাঙ্গো-সেকিজাই ব্যবহারের পরামর্শ দেব , যা আপনাকে এই জাতীয় কিছু করার অনুমতি দেয়:

{% load sekizai_tags %}

                                  <p>Some content</p>
<p>Some content</p>             | {% addtoblock "js" %}
                                |   <script type="text/javascript">
{% include "partial.html" %} ->      alert("Hello django-sekizai");
                                |   </script>
<p>Some more content</p>         {% endaddtoblock %}


{% render_block "js" %}

থেকে জ্যাঙ্গো-sekizai README :

আমি এই প্রকল্পটি শুরু করার মূল কারণটি ছিল জাঙ্গোতে ভাল মিডিয়া (সিএসএস / জেএস) কাঠামোর অভাব এবং জাঙ্গো-সেন্টিমিটার। হ্যাঁ মিডিয়া ক্লাসটি জ্যাঙ্গোতে ফর্মগুলিতে ব্যবহৃত হয়, তবে সত্যই এটি কার্যকরভাবে কাজ করে না। সাধারণত সীমান্তের ছেলেরা সিএসএস এবং জাভাস্ক্রিপ্ট ফাইলগুলি অন্তর্ভুক্ত করার বিষয়ে সিদ্ধান্ত নিতে চায় এবং তারা পাইথন ফাইলগুলি পরিবর্তন করতে চায় না যে আমি তাদের পাইথন ফাইলগুলি পরিবর্তন করতে চাই না। এজন্য আপনাকে এখন যেখানে আছেন সেই বিন্দুটির আগে বা পরে যে টেম্পলেটগুলির বিষয়বস্তুগুলি সম্পাদনা করার অনুমতি দেওয়ার প্রয়োজন হয়েছিল। এছাড়াও আমি চেয়েছিলাম নকলগুলি সরানো হোক। ফলস্বরূপ আমি লিখলাম জাঙ্গো-সেকিজাই, যা ঠিক তাই করে। এটি ব্লকের মতো, কেবলমাত্র উত্তরাধিকার সূত্রে প্রাপ্ত হওয়ার পরিবর্তে আপনি তাদের প্রসারিত করুন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.