Django
प्रसंग प्रसारक
खोज…
टिप्पणियों
चर में जोड़ने के लिए संदर्भ प्रोसेसर का उपयोग करें जो आपके टेम्प्लेट में कहीं भी सुलभ हैं।
एक फ़ंक्शन, या फ़ंक्शंस निर्दिष्ट करें जो आप चाहते हैं कि चर का dict
लौटाते हैं, फिर उन कार्यों को TEMPLATE_CONTEXT_PROCESSORS
जोड़ें।
टेम्प्लेट में सेटिंग्स.DEBUG तक पहुंचने के लिए एक संदर्भ प्रोसेसर का उपयोग करें
myapp/context_processors.py
:
from django.conf import settings
def debug(request):
return {'DEBUG': settings.DEBUG}
settings.py
:
TEMPLATES = [
{
...
'OPTIONS': {
'context_processors': [
...
'myapp.context_processors.debug',
],
},
},
]
या, संस्करणों के लिए <1.9:
TEMPLATE_CONTEXT_PROCESSORS = (
...
'myapp.context_processors.debug',
)
तो मेरे टेम्पलेट्स में, बस:
{% if DEBUG %} .header { background:#f00; } {% endif %}
{{ DEBUG }}
सभी टेम्पलेट्स में आपकी सबसे हाल की ब्लॉग प्रविष्टियों का उपयोग करने के लिए एक संदर्भ प्रोसेसर का उपयोग करना
मान लें कि आप एक मॉडल कहा जाता है Post
अपने में परिभाषित models.py
फ़ाइल है कि ब्लॉग पोस्ट में शामिल है, और एक है date_published
क्षेत्र।
चरण 1: संदर्भ प्रोसेसर लिखें
अपने एप्लिकेशन डायरेक्टरी में एक फाइल बनाएं (जोड़ें या जोड़ें) जिसे context_processors.py
कहा जाता है:
from myapp.models import Post
def recent_blog_posts(request):
return {'recent_posts':Post.objects.order_by('-date_published')[0:3],} # Can change numbers for more/fewer posts
चरण 2: अपनी सेटिंग फ़ाइल में संदर्भ प्रोसेसर जोड़ें
सुनिश्चित करें कि आप TEMPLATES
चर में अपनी settings.py
में अपना नया संदर्भ प्रोसेसर जोड़ेंगे:
TEMPLATES = [
{
...
'OPTIONS': {
'context_processors': [
...
'myapp.context_processors.recent_blog_posts',
],
},
},
]
(1.9 से पहले के Django संस्करणों में, इसे सीधे TEMPLATE_CONTEXT_PROCESSORS
वैरिएबल का उपयोग करके settings.py
में सेट किया गया था।)
चरण 3: अपने टेम्पलेट्स में संदर्भ प्रोसेसर का उपयोग करें
अब व्यक्तिगत विचारों के माध्यम से हाल की ब्लॉग प्रविष्टियों को पारित करने की आवश्यकता नहीं है! किसी भी टेम्प्लेट में recent_blog_posts
का उपयोग करें।
उदाहरण के लिए, home.html
आप हालिया पोस्टों के लिंक के साथ एक साइडबार बना सकते हैं:
<div class="blog_post_sidebar">
{% for post in recent_blog_posts %}
<div class="post">
<a href="{{post.get_absolute_url}}">{{post.title}}</a>
</div>
{% endfor %}
</div>
या blog.html
आप प्रत्येक पोस्ट का अधिक विस्तृत प्रदर्शन बना सकते हैं:
<div class="content">
{% for post in recent_blog_posts %}
<div class="post_detail">
<h2>{{post.title}}</h2>
<p>Published on {{post.date_published}}</p>
<p class="author">Written by: {{post.author}}</p>
<p><a href="{{post.get_absolute_url}}">Permalink</a></p>
<p class="post_body">{{post.body}}</p>
</div>
{% endfor %}
</div>
अपने टेम्प्लेट का विस्तार करना
समूह सदस्यता (या किसी भी क्वेरी / तर्क) के आधार पर टेम्पलेट को निर्धारित करने के लिए प्रसंग प्रोसेसर। यह हमारे सार्वजनिक / नियमित उपयोगकर्ताओं को एक टेम्पलेट और हमारे विशेष समूह को एक अलग पाने के लिए अनुमति देता है।
MyApp / context_processors.py
def template_selection(request):
site_template = 'template_public.html'
if request.user.is_authenticated():
if request.user.groups.filter(name="some_group_name").exists():
site_template = 'template_new.html'
return {
'site_template': site_template,
}
अपनी सेटिंग में संदर्भ प्रोसेसर जोड़ें।
अपने टेम्पलेट्स में, संदर्भ प्रोसेसर में परिभाषित चर का उपयोग करें।
{% extends site_template %}