खोज…


टिप्पणियों

चर में जोड़ने के लिए संदर्भ प्रोसेसर का उपयोग करें जो आपके टेम्प्लेट में कहीं भी सुलभ हैं।

एक फ़ंक्शन, या फ़ंक्शंस निर्दिष्ट करें जो आप चाहते हैं कि चर का 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 %}


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow