I am trying to display data on my base.html file so I decided to use context processor to achieve that. On my models.py I override the User model to use AbstractBaseUser so I can add user_type attribute on my user model
below is my code.
on context_processor.py
def meeting_notifications(request):
if request.user.user_type == 'CDA Admin':
n = Meetings.objects.filter(meeting_class='CDA Admin')
context = {'notifications':n}
return context
elif request.user.user_type == 'CDA Member':
n = Meetings.objects.filter(meeting_class='CDA Member')
context = {'notifications':n}
return context
But below is the error I get
Internal Server Error: /
Traceback (most recent call last):
File "C:\Users\Benedict\Miniconda3\envs\mycda\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
response = get_response(request)
File "C:\Users\Benedict\Miniconda3\envs\mycda\lib\site-packages\django\core\handlers\base.py", line 115, in _get_response
response = self.process_exception_by_middleware(e, request)
File "C:\Users\Benedict\Miniconda3\envs\mycda\lib\site-packages\django\core\handlers\base.py", line 113, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "D:\mycda\backend\views.py", line 38, in sample
return render(request, 'dashboard/sample.html')
File "C:\Users\Benedict\Miniconda3\envs\mycda\lib\site-packages\django\shortcuts.py", line 19, in render
content = loader.render_to_string(template_name, context, request, using=using)
File "C:\Users\Benedict\Miniconda3\envs\mycda\lib\site-packages\django\template\loader.py", line 62, in render_to_string
return template.render(context, request)
File "C:\Users\Benedict\Miniconda3\envs\mycda\lib\site-packages\django\template\backends\django.py", line 61, in render
return self.template.render(context)
File "C:\Users\Benedict\Miniconda3\envs\mycda\lib\site-packages\django\template\base.py", line 169, in render
with context.bind_template(self):
File "C:\Users\Benedict\Miniconda3\envs\mycda\lib\contextlib.py", line 113, in __enter__
return next(self.gen)
File "C:\Users\Benedict\Miniconda3\envs\mycda\lib\site-packages\django\template\context.py", line 246, in bind_template
updates.update(processor(self.request))
File "D:\mycda\backend\context_processor.py", line 6, in meeting_notifications
if request.user.user_type == 'CDA Admin':
File "C:\Users\Benedict\Miniconda3\envs\mycda\lib\site-packages\django\utils\functional.py", line 225, in inner
return func(self._wrapped, *args)
AttributeError: 'AnonymousUser' object has no attribute 'user_type'
[16/Aug/2020 06:54:40] "GET / HTTP/1.1" 500 103661
When I added @login_required and check if the user is authenticated as seen in the code below
@login_required(login_url='/backoffice/')
def meeting_notifications(request):
if request.user.is_authenticated:
if request.user.user_type == 'CDA Admin':
n = Meetings.objects.filter(meeting_class='CDA Admin')
context = {'notifications':n}
return context
elif request.user.user_type == 'CDA Member':
n = Meetings.objects.filter(meeting_class='CDA Member')
context = {'notifications':n}
return context
I now have a new error when I tried to load my page. I will appreciate it if I get help from someone.
Traceback (most recent call last):
File "C:\Users\Benedict\Miniconda3\envs\mycda\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
response = get_response(request)
File "C:\Users\Benedict\Miniconda3\envs\mycda\lib\site-packages\django\core\handlers\base.py", line 115, in _get_response
response = self.process_exception_by_middleware(e, request)
File "C:\Users\Benedict\Miniconda3\envs\mycda\lib\site-packages\django\core\handlers\base.py", line 113, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "D:\mycda\backend\views.py", line 38, in sample
return render(request, 'dashboard/sample.html')
File "C:\Users\Benedict\Miniconda3\envs\mycda\lib\site-packages\django\shortcuts.py", line 19, in render
content = loader.render_to_string(template_name, context, request, using=using)
File "C:\Users\Benedict\Miniconda3\envs\mycda\lib\site-packages\django\template\loader.py", line 62, in render_to_string
return template.render(context, request)
File "C:\Users\Benedict\Miniconda3\envs\mycda\lib\site-packages\django\template\backends\django.py", line 61, in render
return self.template.render(context)
File "C:\Users\Benedict\Miniconda3\envs\mycda\lib\site-packages\django\template\base.py", line 169, in render
with context.bind_template(self):
File "C:\Users\Benedict\Miniconda3\envs\mycda\lib\contextlib.py", line 113, in __enter__
return next(self.gen)
File "C:\Users\Benedict\Miniconda3\envs\mycda\lib\site-packages\django\template\context.py", line 246, in bind_template
updates.update(processor(self.request))
ValueError: dictionary update sequence element #0 has length 0; 2 is required
[16/Aug/2020 06:57:59] "GET / HTTP/1.1" 500 96414