【问题标题】:Allow import/export functions for super users only仅允许超级用户使用导入/导出功能
【发布时间】:2018-03-02 06:21:31
【问题描述】:

我想只允许超级用户使用导入/导出功能。如何实现?

我设法通过自定义 css 隐藏了导入/导出按钮。但我也想禁用相应的函数调用:

http://localhost:9012/admin/persons/person/import/ http://localhost:9012/admin/persons/person/export/

【问题讨论】:

  • 在导出/导入函数中只检查用户是否是超级用户,否则返回 False

标签: django import export django-import-export


【解决方案1】:

如果您使用基于函数的视图,您可以使用 user_passes_test 装饰器来控制哪些用户可以使用该视图。要要求用户是超级用户,您可以这样做

from django.contrib.auth.decorators import user_passes_test

@user_passes_test(lambda u: u.is_superuser)
def my_view(request):
    ...

或者,如果您使用基于类的视图,您可以像这样使用 UserPassesTestMixin

from django.contrib.auth.mixins import UserPassesTestMixin

class MyView(UserPassesTestMixin, View):

    def test_func(self):
        return self.request.is_superuser

文档链接: https://docs.djangoproject.com/en/2.0/topics/auth/default/#django.contrib.auth.decorators.user_passes_test

【讨论】:

  • 您好,有一个错字。 from django.contrib.auth.decotators - 这是装饰器。干杯
  • 谢谢,已解决
猜你喜欢
  • 2016-10-13
  • 1970-01-01
  • 1970-01-01
  • 2010-11-27
  • 1970-01-01
  • 1970-01-01
  • 2020-02-20
  • 2017-01-22
  • 1970-01-01
相关资源
最近更新 更多