Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Add a variable to request in django

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']}}");
like image 812
Rajeev Avatar asked Mar 07 '11 11:03

Rajeev


1 Answers

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

like image 170
Anurag Uniyal Avatar answered Sep 20 '22 12:09

Anurag Uniyal