只有管​​理员可以访问的页面

时间:2020-02-20 21:22:15

标签: django

您好,我想知道是否可以使页面仅可供管理员(超级用户)访问吗?我在文档中什么都找不到,但是我希望我的分析页面只能由超级用户访问,而无需在配置文件中使用布尔值< / p>

2 个答案:

答案 0 :(得分:1)

您可以使用@staff_member_required decorator [Django-doc]装饰视图,例如:

# app/views.py

from django.contrib.admin.views.decorators import staff_member_required

@staff_member_required
def my_view(request):
    # …

或对于基于类的视图(CBV),您可以使用UserPassesTestMixin mixin [Django-doc]

# app/views.py

from django.contrib.auth.mixins import UserPassesTestMixin

class StaffMemberRequiredMixin(UserPassesTestMixin):

    def test_func(self):
        return self.request.user.is_staff

class MyView(StaffMemberRequiredMixin, View):
    # …

答案 1 :(得分:0)

my_html_page

{% if request.user.is_superuser %}
    so your html tags and other data you want to show
{% else %}
    you're not authorized to see the content
{% end %}

或者您也可以在views.py中进行此类限制:

def view_p(request):
    if not request.user.is_superuser:
        return HttpResponseBadRequest()

最好创建一个装饰器或使用一个现有的装饰器,如果您想进行此限制, 另一个好主意是代替Http-bad-request,向用户发送一条更好的消息,以解释认为其请求不正确的原因。(可能会返回包含该消息的html页面) 也看到这个: Django: Hide button in template, if user is not super-user