gpt4 book ai didi

python - Django 应用自定义用户权限

转载 作者:太空宇宙 更新时间:2023-11-03 16:45:36 25 4
gpt4 key购买 nike

我目前正在使用此方法向用户提供与其相关的页面。

def get_user_url(request):
un = request.user.username
t = get_template(un + '.htm')
html = t.render()
return HttpResponse(http)

我只期望有少量用户,每个用户代表一个公司,所以这不是问题,因为我可以简单地拥有五六个具有不同内容的 html 文件。现在,我被要求考虑每个公司的多个用户,假设同一公司下的用户具有不同的权限。

所以我查看了自定义权限的文档:https://docs.djangoproject.com/en/dev/topics/auth/customizing/#custom-permissions这可以工作,但我最终可能会得到一个包含 30 行的权限类,如下所示,这对我来说是一个糟糕的方法。

permissions = (
("company1_permission1", "Company 1 Permission 1"),
("company1_permission2", "Company 1 Permission 2"),
("company2_permission1", "Company 1 Permission 1"),
("company2_permission2", "Company 1 Permission 2"),
("company3_permission1", "Company 1 Permission 1"),
)

有没有办法向用户添加“公司”字段并使用上述方法?因此,除非用户来自正确的公司,否则他们甚至无法访问页面。然后,在该页面中,我将自定义权限应用于该页面上的内容。

或者是否有更好的方法来实现此类功能。我是 django 和 python 的新手。

最佳答案

一个好的解决方案是使用 @user_passes_test() decorator .

文档提供了一个很好的示例,用于确保用户的电子邮件来自特定公司,您可以轻松地根据您的用例进行调整:

from django.contrib.auth.decorators import user_passes_test

def email_check(user):
return user.email.endswith('@example.com')

@user_passes_test(email_check)
def my_view(request):
...

这种方法的主要问题是您无法访问代码中的 request 对象。解决方案是使用基于类的 View ,其中 UserPassesTestMixin 可以访问 self.request

关于python - Django 应用自定义用户权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36335294/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com