title: What are Django context processors?
body: <p>I am struggling with these concepts. For example, I have this view function</p>
  
  <pre><code>def post_detail(request, year, month, day, post):
      post = get_object_or_404(Post, slug=post,status='published',p__year=year,p__month=month,p__day=day,status='published',)
      return render(request,'blog/post/detail.html',{'post': post})
  </code></pre>
  
  <p>As I understand, function will take request object as parameter, the template path and the variables to render the given template. Until now it is OK. But now comes template context processor and the magic behind the scene. From <a href="https://docs.djangoproject.com/en/1.7/ref/templates/api/#subclassing-context-requestcontext" rel="nofollow noreferrer">djangoproject</a></p>
  
  <blockquote>
    <p>The <code>TEMPLATE_CONTEXT_PROCESSORS</code> setting is a tuple of callables –
    called context processors – that take a request object as their
    argument and return a dictionary of items to be merged into the
    context</p>
  </blockquote>
  
  <p>What are they actually doing? They will expose data inside templates, are there any limitations regarding the input data?</p>