我试图在我的base.html文件中显示数据,所以我决定使用上下文处理器来实现这一点。在mymodels.py上,我覆盖用户模型以使用AbstractBaseUser,因此我可以在我的用户模型上添加User\u type属性
下面是我的代码。
在上下文处理器上.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
但下面是我得到的错误
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
当我添加@login_required并检查用户是否已通过验证时,如下面的代码所示
@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
我现在在尝试加载页面时出现了一个新错误。如果我得到别人的帮助,我会很感激的
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
目前没有回答
相关问题 更多 >
编程相关推荐