我的Django应用旨在供我工作的公司内部使用;但是,需要将其设置为只有具有登录凭据的某些员工才能访问任何网页。此外,我需要能够自定义视图,以便只有具有正确权限的帐户才能访问它们。我该怎么办?
我的直觉是使用与管理站点相同的密码保护和特权系统,因为我的项目基本上只是为了轻松查看和编辑数据库。但是,Google似乎没有提供有关如何执行此操作的任何信息,而且我与Django的合作仅一个半月,因此我自己还没有足够的知识来解决这一问题。有没有办法使用管理站点的密码保护和特权系统或无法访问?
答案 0 :(得分:0)
如果员工特权足够,则可以使用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