Django RequestContext
O RequestContext do django serve para popular o template com variavés padrões, ou seja váriaveis comum aos templates. Quando você usar o RequestContext como parâmetro no render_to_response de sua view, ele usará os chamados context_processor setados na váriavel TEMPLATE_CONTEXT_PROCESSOR do settings.py do projeto(por padrão esta váriavel não esta no settings), funções que retornão um dicionário de dados.
TEMPLATE_CONTEXT_PROCESSORS = ( "django.core.context_processors.auth", "django.core.context_processors.debug", "django.core.context_processors.i18n", "django.core.context_processors.media", )
Para criar um contex_processor é só criar uma função da seguinte maneira, você pode criar um arquivo context_processor.py na pasta de sua app.
def teste_contex_processor(request): user = request.user return { 'user':user, 'ip_address': request.META['REMOTE_ADDR'] }
e colocar o context_processor criado no settings
TEMPLATE_CONTEXT_PROCESSORS = ( ..., "meuprojeto.app.context_processor.teste_context_processor", )
Para usar o RequestContext no render_to_response, basta fazer o seguinte:
...
return render_to_response(
'templates/index.html',
dicionario_de_dados,
context_instance=RequestContext(request)
)
*lembrando que você tem que passar request como parâmetro.


Tchê,
Muito bom esse recurso do Django.
Parabéns pelo Post.
Um abraço,
Leandro.
Ótima dica!
Eu mesmo utilizo crio alguns context processors para me ajudar nos projetos, economiza muito trabalho.
Só uma observação, o context_processors.auth já cria a variavel user no template apontando para request.user como no seu exemplo, então não precisa fazer um context processor para isso
Abraços e tudo de bom!