python - How do I set the template_name using generic.TemplateView based on is_authenticated vs is_superuser? -
i'm using django. i'm attempting set template use based on django user access level. can see i'm using loginrequiredmixin , generic.templateview.
this i'd do:
this code used in views.py.
class tableview(loginrequiredmixin, generic.templateview): if user.is_superuser == true: template_name = 'achtable.html' elif user.is_authenticated: template_name = 'userachtable.html' unfortunatly appears can't access user. in manner.
in views.py have api views work expected based on user authentication. follows:
class mylist(loginrequiredmixin, generics.listcreateapiview): serializer_class = myserializer def get_queryset(self): if self.request.user.is_superuser==true: queryset = importantstuff.objects.all() return queryset elif self.request.user.is_authenticated(): queryset = importantstuff.objects.all() return queryset.filter(claimed=false) any input appreciated. thank you.
you need request you've done in mylist (use function).
class tableview(loginrequiredmixin, generic.templateview): def get_template_names(self): if self.request.user.is_superuser: return 'superadmin/path/template.html' return 'regular/path/template.html' by way:
if self.request.user.is_superuser==true: is same (better version):
if self.request.user.is_superuser: and if use loginrequiredmixin, know user authenticated second if statement useless.
here mylist updated:
class mylist(loginrequiredmixin, generics.listcreateapiview): serializer_class = myserializer def get_queryset(self): if self.request.user.is_superuser: return importantstuff.objects.all() return importantstuff.objects.filter(claimed=false)
Comments
Post a Comment