RE: when is a Context Processor called?

2012-10-09 Thread lacrymol...@gmail.com

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-09 Thread Marek Brzóska
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?

2012-10-09 Thread Tom Evans
On Mon, Oct 8, 2012 at 3:28 PM, Stefano T
 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...
>

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?

2012-10-08 Thread Kurtis Mullins
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?

2012-10-08 Thread Stefano T
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?

2012-10-07 Thread Daniel Roseman
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.