Changes between Initial Version and Version 1 of ComoAdicionarVariaveisAoContexto


Ignore:
Timestamp:
Jun 30, 2008, 5:43:32 AM (16 years ago)
Author:
Marinho Brandão
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • ComoAdicionarVariaveisAoContexto

    v1 v1  
     1= Como adicionar variaveis ao contexto =
     2
     3Há outras formas de se adicionar variáveis ao contexto, mas usar Template Context Processors (TCPs) é a forma mais simples e adequada para se fazer isso.
     4
     5Veja como fazer:
     6
     71. Crie um módulo Python chamado '''context.py''' na pasta do projeto (o nome e o caminho são segundo o seu gosto, este é apenas um exemplo) com o seguinte conteúdo:
     8
     9{{{
     10from django.conf import settings
     11
     12def context_processors(request):
     13    ret = {}
     14
     15    ret['settings'] = settings
     16    ret['variavel_da_sessao'] = request.session.get('variavel_da_sessao')
     17
     18    return ret
     19}}}
     20
     212. Declare o módulo criado na setting TEMPLATE_CONTEXT_PROCESSORS do arquivo settings.py
     22
     23{{{
     24TEMPLATE_CONTEXT_PROCESSORS = (
     25    "django.core.context_processors.auth",
     26    "django.core.context_processors.debug",
     27    "django.core.context_processors.i18n",
     28    "django.core.context_processors.media",
     29    "meu_projeto.context.context_processors",
     30)
     31}}}
     32
     33Pronto. Agora você pode utilizar as variáveis '''settings''' e '''variavel_da_sessao''' em templates sem precisar declará-las todas as vezes.
     34
     35'''Observação importante:''' os TCPs somente funcionam para response que o usem por padrão. Os contribs padrão do framework utilizam-no, o '''HttpResponse''' e similares também, mas para utilizá-lo com '''render_to_response''' é necessário adicionar sempre o parâmetro '''context_instance''', como no exemplo abaixo:
     36
     37{{{
     38from django.template import RequestContext
     39from django.shortcuts import render_to_response
     40
     41def minha_view(request):
     42    return render_to_response(
     43            'videos/index.html',
     44            locals(),
     45            context_instance=RequestContext(request),
     46            )
     47}}}
     48
     49O snippet em http://www.djangosnippets.org/snippets/821/ aponta uma forma ainda mais simples utilizar render_to_response sem que seja necessário sempre acrescentar a declaração de '''context_instance'''.
Back to Top