Python 如何避免在django管理页面中看到敏感用户数据?

Python 如何避免在django管理页面中看到敏感用户数据?,python,django,django-admin,privacy-policy,Python,Django,Django Admin,Privacy Policy,我做了一个django web应用程序,用户可以在其中输入一些数据。我已经创建了一个超级用户,作为该应用程序的管理员,我可以看到用户输入的数据,这对于名称和非敏感数据来说很好,但我不想看到他们的敏感数据,如健康数据 我使用了django_cryptography中的encrypt模块。字段如下所示: health_data = encrypt(models.IntegerField(default=140)) 我发现如果我从外部脚本或简单的DBbrowser查看数据库,它工作得很好,因为我看不

我做了一个django web应用程序,用户可以在其中输入一些数据。我已经创建了一个超级用户,作为该应用程序的管理员,我可以看到用户输入的数据,这对于名称和非敏感数据来说很好,但我不想看到他们的敏感数据,如健康数据

我使用了django_cryptography中的
encrypt
模块。字段如下所示:

health_data = encrypt(models.IntegerField(default=140))
我发现如果我从外部脚本或简单的DBbrowser查看数据库,它工作得很好,因为我看不到敏感数据。但我知道这在django管理中是无缝的:在django管理页面中,它在呈现之前进行解密

所以我同意加密数据,这是额外的安全,但这不是我的第一个目标。我想拥有超级用户,但我希望我不能看到他们的敏感数据。你有什么想法吗?感谢您抽出时间阅读。

根据建议,我更改了以下管理代码:

from django.contrib import admin
from .models import MyModel

# Register your models here.
admin.site.register(MyModel)
为此:

@admin.register(MyModel)
class MyModelAdmin(admin.ModelAdmin):
    # avoid admin can see the sensitive data in admin page
    fields = ("non_sensitive_field1", "non_sensitive_field2",...,)

通过这种方式,我可以自定义管理页面中呈现的字段。我无法在管理员页面中再看到来自用户的敏感数据,这是我想要的行为。

请参见,您可以修改模型管理员站点的行为。特别是如果您不想自定义显示的字段等,请参阅
字段
属性。@AbdulAzizBarkat,好的。在我的应用程序中的
admin.py
中,我通过这个
类MyModelAdmin(admin.ModelAdmin):fields=(my_fields)
和decorator
@admin.register
更改了这个
admin.site.register
,效果很好,但事实是我不确定这是我想要的行为。如果我是恶意的,我仍然可以更改我的应用程序的代码并取回敏感数据。我知道我不会这么做,但让我们想象一下,我把整个代码项目的管理工作交给了另一个人。我可能有点偏执,但我想确定我的做法是正确的。“如果我是恶意的,我仍然可以更改我的应用程序的代码并取回敏感数据”,你说话的时候好像有任何可能的解决方案。谁能阻止直接访问代码的人,并根据他们的意愿修改代码?他们甚至不需要管理员站点,因为这只是一些加密,使用
SECRET\u KEY
CRYPTOGRAPHY\u KEY
设置,他们可以清楚地看到这些设置,更不用说他们可以自己简单地查询shell了。。。