RE: when is a Context Processor called?
For this example in particular, if you have django's UserMiddleware active, and that code assumes you do, you can always do request.user.get_profile() without needing to add this custom middleware -Mensaje original- De: Marek Brzóska Enviados: 09/10/2012 09:28:16 Asunto: Re: when is a Context Processor called? 2012/10/9 Stefano Tranquillini <stefano.tranquill...@gmail.com> > ok, > but in this way when the user logs out i've to remove the object from the > request, right? > what if the user closes the browser? > No. The request object lives just for one request from browser. User clicks tries to get certain url in browser, then django creates request object, which you use in view - as first argument. With this middleware you will be able to use request.profile if user has profile. -- Marek Brzóska brzoskama...@gmail.com -- You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-users@googlegroups.com. To unsubscribe from this group, send email to django-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/django-users?hl=en. -- You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-users@googlegroups.com. To unsubscribe from this group, send email to django-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/django-users?hl=en.
Re: when is a Context Processor called?
2012/10/9 Stefano Tranquillini> ok, > but in this way when the user logs out i've to remove the object from the > request, right? > what if the user closes the browser? > No. The request object lives just for one request from browser. User clicks tries to get certain url in browser, then django creates request object, which you use in view - as first argument. With this middleware you will be able to use request.profile if user has profile. -- Marek Brzóska brzoskama...@gmail.com -- You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-users@googlegroups.com. To unsubscribe from this group, send email to django-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/django-users?hl=en.
Re: when is a Context Processor called?
On Mon, Oct 8, 2012 at 3:28 PM, Stefano Twrote: > Ok. > so basically they are called before the rendering of a template. > > How can i have an object stored in the request object (if possible)? > > Something that lets me to do, in a view: request.user_profile... > You can define a simple middleware to put attributes on a request. Eg: class MyMiddleware(object): def process_request(request): request.profile = None if request.user.is_authenticated(): request.profile = request.user.get_profile() See the documentation on middleware: https://docs.djangoproject.com/en/1.4/topics/http/middleware/ Note that anything you put in TEMPLATE_CONTEXT_PROCESSORS is run whenever you render a template, and anything in MIDDLEWARE_CLASSES will be run on each request, so make sure the things you do in those places are actually required every time you render a template / process a request. Cheers Tom -- You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-users@googlegroups.com. To unsubscribe from this group, send email to django-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/django-users?hl=en.
Re: when is a Context Processor called?
https://docs.djangoproject.com/en/dev/topics/http/sessions/ On Mon, Oct 8, 2012 at 10:28 AM, Stefano T <stefano.tranquill...@gmail.com>wrote: > Ok. > so basically they are called before the rendering of a template. > > How can i have an object stored in the request object (if possible)? > > Something that lets me to do, in a view: request.user_profile... > > > On Sunday, October 7, 2012 8:37:01 PM UTC+2, Daniel Roseman wrote: >> >> On Sunday, 7 October 2012 17:43:19 UTC+1, Stefano T wrote: >> >>> Hi all. >>> i just discovered the context processor, and i use it for put an object >>> in the request automatically, this is the code: >>> >>> def addProfile(request): >>> try: >>> userProfile = UserProfile.objects.get(user=**request.user) >>> return {'user_profile':userProfile} >>> except: >>> return {} >>> >>> this is the setting.py >>> >>> TEMPLATE_CONTEXT_PROCESSORS = ( >>> 'django.contrib.auth.context_**processors.auth', >>> 'django.contrib.messages.**context_processors.messages', >>> 'social_auth.context_**processors.social_auth_by_**type_backends', >>> 'earth.context_processors.**addProfile', >>> ) >>> >>> now, it works, except one case. >>> i've in a html page ajax call that sends some data to an url, here the >>> JS: >>> >>> $.post("/geoloc/updateloc/", { latitude: lat, longitude: lon }); >>> >>> mapped as >>> >>> url(r'^geoloc/updateloc/$', 'earth.views.updateLoc'), >>> >>> >>> and here is the view: >>> >>> @login_required >>> @csrf_protect >>> def updateLoc(request): >>> message={} >>> message['status']='ko' >>> if request.is_ajax(): >>> if request.method == 'POST': >>> message['status']='ok' >>> userProfile = request.user_profile >>> userProfile.latitude=request.**POST['latitude'] >>> userProfile.longitude=request.**POST['longitude'] >>> userProfile.save() >>> # Here we can access the POST data >>> return HttpResponse(json.dumps(**message), >>> mimetype="application/json") >>> >>> the fact is that in the view, the request.user_profile (which should be >>> loaded by the context template) is empty or none. basically if i print it i >>> don't have anything printed. >>> >>> basically: when is my context processor called? >>> is it called only for render_to_response or also for redirect or >>> HTTPResponse or HTTPResponseRedirect? >>> what should i do? >>> >>> >>> thanks >>> >>> ciao >>> >>> >>> >>> -- >>> Stefano >>> >> >> >> The name of the setting should give you a clue: >> TEMPLATE_CONTEXT_PROCESSOR. Context processors are for doing stuff to >> template contexts. They have nothing whatsoever to do with views. If you're >> not using a template, then context processor won't help you. >> -- >> DR. >> > -- > You received this message because you are subscribed to the Google Groups > "Django users" group. > To view this discussion on the web visit > https://groups.google.com/d/msg/django-users/-/SrWWDpVQ-joJ. > > To post to this group, send email to django-users@googlegroups.com. > To unsubscribe from this group, send email to > django-users+unsubscr...@googlegroups.com. > For more options, visit this group at > http://groups.google.com/group/django-users?hl=en. > -- You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-users@googlegroups.com. To unsubscribe from this group, send email to django-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/django-users?hl=en.
Re: when is a Context Processor called?
Ok. so basically they are called before the rendering of a template. How can i have an object stored in the request object (if possible)? Something that lets me to do, in a view: request.user_profile... On Sunday, October 7, 2012 8:37:01 PM UTC+2, Daniel Roseman wrote: > > On Sunday, 7 October 2012 17:43:19 UTC+1, Stefano T wrote: > >> Hi all. >> i just discovered the context processor, and i use it for put an object >> in the request automatically, this is the code: >> >> def addProfile(request): >> try: >> userProfile = UserProfile.objects.get(user=request.user) >> return {'user_profile':userProfile} >> except: >> return {} >> >> this is the setting.py >> >> TEMPLATE_CONTEXT_PROCESSORS = ( >> 'django.contrib.auth.context_processors.auth', >> 'django.contrib.messages.context_processors.messages', >> 'social_auth.context_processors.social_auth_by_type_backends', >> 'earth.context_processors.addProfile', >> ) >> >> now, it works, except one case. >> i've in a html page ajax call that sends some data to an url, here the JS: >> >> $.post("/geoloc/updateloc/", { latitude: lat, longitude: lon }); >> >> mapped as >> >> url(r'^geoloc/updateloc/$', 'earth.views.updateLoc'), >> >> >> and here is the view: >> >> @login_required >> @csrf_protect >> def updateLoc(request): >> message={} >> message['status']='ko' >> if request.is_ajax(): >> if request.method == 'POST': >> message['status']='ok' >> userProfile = request.user_profile >> userProfile.latitude=request.POST['latitude'] >> userProfile.longitude=request.POST['longitude'] >> userProfile.save() >> # Here we can access the POST data >> return HttpResponse(json.dumps(message), mimetype="application/json") >> >> the fact is that in the view, the request.user_profile (which should be >> loaded by the context template) is empty or none. basically if i print it i >> don't have anything printed. >> >> basically: when is my context processor called? >> is it called only for render_to_response or also for redirect or >> HTTPResponse or HTTPResponseRedirect? >> what should i do? >> >> >> thanks >> >> ciao >> >> >> >> -- >> Stefano >> > > > The name of the setting should give you a clue: > TEMPLATE_CONTEXT_PROCESSOR. Context processors are for doing stuff to > template contexts. They have nothing whatsoever to do with views. If you're > not using a template, then context processor won't help you. > -- > DR. > -- You received this message because you are subscribed to the Google Groups "Django users" group. To view this discussion on the web visit https://groups.google.com/d/msg/django-users/-/SrWWDpVQ-joJ. To post to this group, send email to django-users@googlegroups.com. To unsubscribe from this group, send email to django-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/django-users?hl=en.
Re: when is a Context Processor called?
On Sunday, 7 October 2012 17:43:19 UTC+1, Stefano T wrote: > Hi all. > i just discovered the context processor, and i use it for put an object in > the request automatically, this is the code: > > def addProfile(request): > try: > userProfile = UserProfile.objects.get(user=request.user) > return {'user_profile':userProfile} > except: > return {} > > this is the setting.py > > TEMPLATE_CONTEXT_PROCESSORS = ( > 'django.contrib.auth.context_processors.auth', > 'django.contrib.messages.context_processors.messages', > 'social_auth.context_processors.social_auth_by_type_backends', > 'earth.context_processors.addProfile', > ) > > now, it works, except one case. > i've in a html page ajax call that sends some data to an url, here the JS: > > $.post("/geoloc/updateloc/", { latitude: lat, longitude: lon }); > > mapped as > > url(r'^geoloc/updateloc/$', 'earth.views.updateLoc'), > > > and here is the view: > > @login_required > @csrf_protect > def updateLoc(request): > message={} > message['status']='ko' > if request.is_ajax(): > if request.method == 'POST': > message['status']='ok' > userProfile = request.user_profile > userProfile.latitude=request.POST['latitude'] > userProfile.longitude=request.POST['longitude'] > userProfile.save() > # Here we can access the POST data > return HttpResponse(json.dumps(message), mimetype="application/json") > > the fact is that in the view, the request.user_profile (which should be > loaded by the context template) is empty or none. basically if i print it i > don't have anything printed. > > basically: when is my context processor called? > is it called only for render_to_response or also for redirect or > HTTPResponse or HTTPResponseRedirect? > what should i do? > > > thanks > > ciao > > > > -- > Stefano > The name of the setting should give you a clue: TEMPLATE_CONTEXT_PROCESSOR. Context processors are for doing stuff to template contexts. They have nothing whatsoever to do with views. If you're not using a template, then context processor won't help you. -- DR. -- You received this message because you are subscribed to the Google Groups "Django users" group. To view this discussion on the web visit https://groups.google.com/d/msg/django-users/-/2lklE1ekuCYJ. To post to this group, send email to django-users@googlegroups.com. To unsubscribe from this group, send email to django-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/django-users?hl=en.