【问题标题】:Include routed groups for authenticated url包括经过身份验证的 url 的路由组
【发布时间】:2023-03-09 01:30:02
【问题描述】:

为经过身份验证的 url 包含路由组。

我需要创建认证组并根据权限启用路由。

例如。

urlpatterns = [
    @adminGroup
    path('admin/', admin.site.urls),

    @userGroup, @adminGroup
    path('/home', home.site.urls),
]

【问题讨论】:

标签: django django-views django-urls


【解决方案1】:

我们可以使用staff_member_required [Django-doc]login_required [Django-doc] 函数。

为了在一组url上强制执行装饰器,我们可以使用django-decorator-include [GitHub]

您可以通过以下方式安装它:

$ pip3 install django-decorator-include

(可能在您的虚拟环境中)

然后我们可以通过以下方式强制装饰器:

from decorator_include import decorator_include
from django.contrib.auth.decorators import login_required
from django.contrib.admin.views.decorators import staff_member_required

urlpatterns = [
    path('admin/', decorator_include(staff_member_required, 'admin.site.urls')),
    path('/home', decorator_include(login_required, 'home.site.urls')),
]

对于更复杂的测试,您可以使用user_passes_test [Django-doc]

【讨论】:

  • 嗨。谢谢你。如何使用群组?
  • 是的,例如decorator_include(user_passes_test(lambda u: u.groups.filter(name='my_group_name').exists()), 'home.site.urls')` 例如。
  • 如果超过一组,使用 name__in?
  • @marcelo.delta:是的,但请注意,用户属于列出的组中的一个就足够了,而不是所有
  • 嗨,你能再帮忙一次吗?如何在此 URL 中使用装饰器? path(r'modulo/cadastro/cliente', ClienteList.as_view(), name='cadastro_list'),
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-09-26
  • 1970-01-01
  • 2017-09-11
  • 1970-01-01
  • 2021-05-26
  • 1970-01-01
  • 2018-07-30
相关资源
最近更新 更多