Поскольку я новичок в django, я застреваю во многих местах.
Я работаю над проектом для моей компании, где пользователи делятся на три категории. В моей модели User я добавил три логических файла с именами category1, category2 и category3, с любым True из трех полей.
Теперь я не хочу, чтобы пользователь category1 имел доступ к шаблонам category2 и category3.
Я пытаюсь проверить функцию в views.py с указанными ниже кодами
def user_check(request):
if not request.user.category1:
if request.user.category2:
return redirect('/category2')
elif request.user.category3:
return redirect('/category3')
В настоящее время это не помогает мне с желаемым выводом. Просьба помочь мне с правильным решением по этому вопросу
Я не хочу, чтобы пользователи категории 1 могли просматривать страницы категории 2 и категории 3. он / она должен иметь возможность просматривать страницы, предназначенные для него / нее, только если он / она пытается пропустить поток и получить к нему доступ
Traceback
Environment:
Request Method: GET
Request URL: http://127.0.0.1:8000/manager
Django Version: 2.2.5
Python Version: 3.7.1
Installed Applications:
['django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'intranet_app.apps.IntranetAppConfig',
'intranet_app_agent.apps.IntranetAppAgentConfig',
'intranet_app_supervisor.apps.IntranetAppSupervisorConfig',
'intranet_app_manager.apps.IntranetAppManagerConfig']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware']
Traceback:
File "C:\Users\sasank.sankaran\Desktop\web_project\intranet_venv\lib\site-packages\django\core\handlers\exception.py" in inner
34. response = get_response(request)
File "C:\Users\sasank.sankaran\Desktop\web_project\intranet_venv\lib\site-packages\django\core\handlers\base.py" in _get_response
115. response = self.process_exception_by_middleware(e, request)
File "C:\Users\sasank.sankaran\Desktop\web_project\intranet_venv\lib\site-packages\django\core\handlers\base.py" in _get_response
113. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\Users\sasank.sankaran\Desktop\web_project\intranet_venv\lib\site-packages\django\contrib\auth\decorators.py" in _wrapped_view
21. return view_func(request, *args, **kwargs)
File "C:\Users\sasank.sankaran\Desktop\web_project\intranet_venv\lib\site-packages\django\contrib\auth\decorators.py" in _wrapped_view
20. if test_func(request.user):
File "C:\Users\sasank.sankaran\Desktop\web_project\intranet_venv\lib\site-packages\django\contrib\auth\decorators.py" in _wrapped_view
20. if test_func(request.user):
File "C:\Users\sasank.sankaran\Desktop\web_project\intranet_venv\lib\site-packages\django\utils\functional.py" in inner
257. return func(self._wrapped, *args)
Exception Type: AttributeError at /manager
Exception Value: 'MyUser' object has no attribute 'user'
def category_check_to_block(user):
return user.is_category2
@user_passes_test(category_check_to_block)
class MyUser(AbstractUser):
name = models.CharField(max_length=100)
email = models.EmailField(max_length=255, unique=True)
supervisor = models.CharField(max_length=100)
location = models.CharField(max_length=100)
profile = models.CharField(max_length=100)
team = models.CharField(max_length=100)
lob = models.CharField(max_length=100)
span = models.CharField(max_length=100)
ojt_date = models.DateField()
is_agent = models.BooleanField(default=True)
is_supervisor = models.BooleanField(default=False)
is_manager = models.BooleanField(default=False)
is_admin = models.BooleanField(default=False)
is_active = models.BooleanField(default=True)
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = []
def __str__(self):
return self.email