首页 > 解决方案 > 限制管理员/访问匿名用户而不是管理员 django

问题描述

我有一个新应用程序:

新应用

有 3 个用户

[管理员,用户 1,用户 2]

和一个登录页面(不是来自 /admin/)。是否可以限制/重定向对 django 管理员登录的访问?如果用户登录 IS 和 admin,我只想进入 admin/ 路径,这意味着如果我没有登录或作为普通用户登录,它不应该工作。

标签: djangodjango-admin

解决方案


我添加这个答案是因为 Pedro 提供的答案无法回答我试图弄清楚的部分,而不是让任何人访问 /admin/ 路径。

我使用Django-Decorator-Include将它与 Pedro 的自定义装饰器混合

我的 urls.py 上的结果是:

from decorator_include import decorator_include
from django.core.exceptions import PermissionDenied

def user_is_admin(function):
    def wrap(request, *args, **kwargs):
        if request.user.is_authenticated and request.user.is_staff:
            return function(request, *args, **kwargs)
        else:
            raise PermissionDenied
    return wrap

urlpatterns = [
    .....
    path('admin/', decorator_include([user_is_admin], admin.site.urls)),
    .....
]

推荐阅读