Python 限制django中的用户
我有一个面板来管理管理员或管理员用户的帖子。 如何限制面板并仅为管理员而不是在系统中注册的其他用户显示它 视图:Python 限制django中的用户,python,django,panel,Python,Django,Panel,我有一个面板来管理管理员或管理员用户的帖子。 如何限制面板并仅为管理员而不是在系统中注册的其他用户显示它 视图: 您可以创建视图的mixin,该mixin要求用户是管理员: class AdminRequiredMixin: @method_decorator(login_required) def dispatch(self, request, *args, **kwargs): if not request.user.is_staff:
您可以创建视图的mixin,该mixin要求用户是管理员:
class AdminRequiredMixin:
@method_decorator(login_required)
def dispatch(self, request, *args, **kwargs):
if not request.user.is_staff:
return redirect(WHERE_YOU_WANT)
return super().dispatch(request, *args, **kwargs)
因为您有CBV,所以可以使用PermissionMixin,然后指定该权限。大概是这样的:
from django.contrib.auth.mixins import PermissionRequiredMixin
class MyView(PermissionRequiredMixin, View):
permission_required = ("is_staff", "is_superuser", )
....
from django.contrib.admin.views.decorators import staff_member_required
@staff_member_required
def my_view(request):
...
参考:
如果要使用基于功能的视图,则可以使用@staff\u member\u required
大概是这样的:
from django.contrib.auth.mixins import PermissionRequiredMixin
class MyView(PermissionRequiredMixin, View):
permission_required = ("is_staff", "is_superuser", )
....
from django.contrib.admin.views.decorators import staff_member_required
@staff_member_required
def my_view(request):
...
参考并进一步阅读:在模板中,您可以直接检查用户
{% if user.is_superuser %}
<p>I'm an admin.</p>
{% else %}
<p>I'm an user.</p>
{% endif %}
{%if user.is_superuser%}
我是管理员
{%else%}
我是一个用户
{%endif%}