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