Reputation: 5578
I'm writing my own custom context_processor
on django (1.11) and to get infos of an authenticated user from auth0. It's not my first time writing it and I don't understand where this error comes from :
ImportError : Module "auth.context_processors" does not define a "auth0_processors" attribute/class
Here's what it looks like :
auth/settings.py :
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
'auth.context_processors.auth0_processors',
],
auth/context_processors/auth0_processors.py :
def auth0_user(request):
try:
user = request.session['profile']
except Exception as e:
user = None
return {'auth0_user': user}
accounts/views.py :
def home(request):
return render(request, 'home.html', {})
Any idea?
Upvotes: 0
Views: 2388
Reputation: 16661
Instead of
'auth.context_processors.auth0_processors'
give the concrete method:
'auth.context_processors.auth0_processors.auth0_user'
At least that is what the error is complaining about:
does not define a "auth0_processors" attribute/class
It is looking for a class or attribute, so try with the function name.
From the documentation:
The context_processors option is a list of callables – called context processors – that take a request object as their argument and return a dictionary of items to be merged into the context.
In answer to your comment:
If you always need the same objects then just create one method that adds all of the required objects to the context instead of several methods.
EDIT:
Also note that with 'django.template.context_processors.request'
you could already have the complete request
object in the context. You might not need your own context processor if you just need access to the session.
Upvotes: 1