Search code examples
djangodjango-viewsdjango-context

Accessing global variable in view using context processor in Django


Assuming I have a context processor:

def title(request):
   return {'titles': 'mytitle'}

I can access this variable in template as {{ titles }}.

But how can I do so in a view?

def myview(request):
    print request.titles

doesn't seem to work - 'WSGIRequest' object has no attribute 'titles'


Or maybe there is a better approach (than context processors) to have global variables accessible in both views and templates?

Thanks in advance.


Solution

  • Context processors aren't in any way global variables. They are simply functions that are run when a RequestContext is initiated, which add items to that context. So they're only available wherever you have a RequestContext, ie in a template.

    Your examples don't really give a good idea of what variables you're looking to access. If it's just some constants you want to use everywhere, a good way is to define them somewhere central, say in settings.py, and import that module wherever you need it - plus use a context processor to add them to the context.