Add a variable to request in django


Question

In Django I want to add a variable to the request. i.e,

def update_name(request):
    names = Employee.objects.filter()
    if names.count() > 0:
        request.update({"names": name })
    return render_to_response('chatlist/newchat.html',
        context_instance=RequestContext(request, {'form': form,'msg': msg}))

Is this the right way to add a variable to the request? If not, how should I do it?

Also, how can I retrieve the same value in the templates page? i.e,

alert ("{{request.names['somename']}}");
1
8
4/20/2015 11:29:28 PM

Accepted Answer

The example you have given is wrong because

  1. there is no request.update function
  2. You are using name variable which you haven't assigned anywhere?

Anyway, in python you can simply assign attributes, e.g.

 def update_name(request):
     names = Employee.objects.filter()
     if(names.count() > 0): 
         request.names = names
 return render_to_response('chatlist/newchat.html', context_instance=RequestContext(request,{'form': form,'msg' : msg}))

Also you don't even need to assign to request, why can't you just pass it to template e.g.

def update_name(request):
    names = Employee.objects.filter()
     return render_to_response('chatlist/newchat.html', context_instance=RequestContext(request,{'form': form,'msg' : msg, 'names': names}))

And in the template page you can access request.name, though if you are doing this just to have a variable available in template page, it is not the best way, you can pass context dict to a template page.

Edit: Also note that before using request in template you need to pass it somehow, it is not available by default see http://docs.djangoproject.com/en/dev/ref/templates/api/#subclassing-context-requestcontext

9
3/10/2011 3:12:23 AM

Licensed under: CC-BY-SA with attribution
Not affiliated with: Stack Overflow
Icon