Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 限制django中的用户_Python_Django_Panel - Fatal编程技术网

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%}