我的Django应用程序适用于我工作的公司内部使用;但是,需要设置它,以便只有具有登录凭据的某些员工才能访问任何网页。此外,我需要能够自定义视图,以便只有具有正确权限的帐户才能访问它们。我该怎么做?
我的直觉是使用管理站点使用的相同密码保护和权限系统,因为我的项目基本上只是用于轻松查看和编辑数据库。然而,谷歌似乎没有提供任何关于如何做到这一点的信息,而且我只与Django合作了一个半月,所以我自己并没有完全了解这一点。有没有办法使用管理站点的密码保护和权限系统,还是无法访问?
如果员工权限足够,可以使用staff_member_required
视图装饰器轻松完成。您只需将装饰器应用到您的视图中即可
staff_member_required示例:
from django.contrib.admin.views.decorators import staff_member_required
@staff_member_required
def random_view(request):
#If the user does not have staff privileges he will be redirected to a login page
如果您想要测试更具体的权限,您应该使用user_passes_test
装饰器。见:Django User Passes Test Decorator
您将装饰器应用于视图并将函数作为参数传递,该参数验证用户是否应该有权访问该页面,如果函数返回正常的True
访问权限,则将重定向用户。
user_passes_test示例:
from django.contrib.auth.decorators import user_passes_test
def user_is_author(user)
#your test goes here, pseudo code example ignore syntax.
return user.is_author
@user_passes_test(user_is_author)
def random_view(request):
#if user passed the test the view will work normally