2009-01-02 15 views
16

मुझे आश्चर्य है कि कोई मुझे निम्न समस्या का सर्वोत्तम दृष्टिकोण जानने में मदद कर सकता है। मैं एक वेब एप्लिकेशन बना रहा हूं जो अपने वेब यूआई घटक बनाने के लिए Django templating का उपयोग करता है। हेडर/फ़ूटर, एचटीएमएल हेड, मास्टहेड इत्यादि जैसे कई सामान्य HTML तत्व हैं। मैं इन्हें एक बार कोड करना चाहता हूं और उन्हें मूल अनुप्रयोग कार्यक्षमता का प्रतिनिधित्व करने वाले अन्य टेम्पलेट्स के साथ "शामिल/गठबंधन" करना चाहता हूं।एक ही अनुरोध में एकाधिक Django टेम्पलेट्स का संयोजन

क्या यह Django टेम्पलेट्स का उपयोग करना संभव है? यदि ऐसा है तो मैं इसे पूरा करने के बारे में कैसे जा सकता हूं?

उत्तर

35

आप Django के extends टैग का उपयोग कर सकते हैं। मान लें कि आपके पास हेडर और पाद लेख था।

{% extends "foo.django" %} 

{% block content %} 
This overrides the content block in foo.django. 
{% endblock %} 

... जो फिर से प्रस्तुत करना होगा: यदि आप किसी अन्य टेम्पलेट, कहते हैं, bar.django कर सकते हैं तो फिर

<h1>My HTML Header</h1> 
<!-- an so on --> 

{% block content %} 
{% endblock %} 

<!-- html footer --> 

,: आप एक टेम्पलेट, कहा जाता है, कहते हैं, foo.django कर सकता है:

<h1>My HTML Header</h1> 
<!-- an so on --> 

This overrides the content block in foo.django. 

<!-- html footer --> 

http://www.djangobook.com/en/1.0/chapter04/ पर django टेम्पलेट्स पर अच्छे निर्देश हैं।

12

{% extends %} और {% include %} विधियां पृष्ठ तत्वों के लिए अच्छी हैं जिनके संदर्भ में अतिरिक्त जानकारी की आवश्यकता नहीं है।

जैसे ही आपको डेटाबेस से संदर्भ में अधिक सामान डालने की आवश्यकता होती है, टेम्पलेट टैग आसान होते हैं। उदाहरण के तौर पर, contrib.comments app Django के साथ शामिल किसी दिए गए मॉडल उदाहरण से जुड़ी टिप्पणियों को पुनर्प्राप्त करने के लिए {% get_comment_list %} टेम्पलेट टैग को परिभाषित करता है। यहाँ कैसे आप इसका इस्तेमाल होता है:

<div> 
{% load comments %} 
{% get_comment_list for my_instance as comment_list %} 
{% for comment in comment_list %} 
    <p><a href="{{ comment.url }}">{{ comment.name }}</a> wrote:</p> 
    {{ comment.comment }} 
{% endfor %} 
</div> 

आप और एक अलग टेम्पलेट में इस बचत हो सकती है अन्य टेम्पलेट्स में यह {% include %}

अपनी खुद की सामग्री के लिए आप अपना खुद का कस्टम टेम्पलेट टैग लिख सकते हैं। the documentation का पालन करें। जब भी संभव हो, simple tag तंत्र का उपयोग करके टैग लिखना सुविधाजनक है। आपको djangosnippets.org और blogosphere पर आसान तैयार किए गए टेम्पलेट टैग मिलेंगे।

संबंधित मुद्दे