django - 限制管理员/访问匿名用户而不是管理员 django
问题描述
我有一个新应用程序:
新应用
有 3 个用户
[管理员,用户 1,用户 2]
和一个登录页面(不是来自 /admin/)。是否可以限制/重定向对 django 管理员登录的访问?如果用户登录 IS 和 admin,我只想进入 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)),
.....
]
推荐阅读
- javascript - 用 HTML 链接替换字符串模板
- php - 如何使用 sql 请求即时转换 sql 表中的 dd.mm.yyyy 日期并获取小于
- c - 如果孩子调用 exec,wait() 会做什么?
- python - concat + groupby + 在熊猫数据框中的多列中应用
- java - 尝试调用方法时出错“无法应用于给定类型”
- p5.js - 如何将 Clickable 库添加到 p5.js Web 编辑器?
- python - WEB SCRAPING - 如何访问通过 javascript ng-binding 呈现的内容?
- css - CSS3轮廓虚线边框仅在一侧
- macos - 从 x GB 开始的 grep
- python - SQLAlchemy 在查询中获取子字符串