我想构建一个django站点,其中某组可信用户可以编辑他们的个人资料信息.让每个可信用户通过django管理界面是否有意义?我只希望他们能够看到和编辑他们自己的信息(显然).似乎这不符合django人定义"信任"的方式,特别是粗体位......
来自The Django Book,第18章:
管理员旨在供您,开发人员信任的人使用.这不仅仅意味着"已经过身份验证的人",这意味着Django假设您的内容编辑可以信任做正确的事情.
这意味着没有用于编辑内容的"批准"流程 - 如果您信任您的用户,则无需批准他们的编辑.它还意味着权限系统虽然功能强大,但不支持基于每个对象限制访问.如果您信任某人编辑他们自己的故事,您相信他们不会在未经许可的情况下编辑其他任何人.
这个用例是否适合django的管理模块,或者它只是一个不受信任的用户的专用视图?
不,Django管理员不适合个人用户配置文件,每个用户都可以查看和编辑所有其他用户配置文件.这更适合需要一次管理所有用户的管理员.
您需要构建的是用户个人资料页面.Django已经有一个很好的登录系统,由django.contrib.auth模块提供.您可以轻松地将其集成到您的页面中,以及Django管理员用于对用户进行身份验证的确切内容.
接下来,您将需要构建一个简单页面,根据用户模型公开特定用户的配置文件信息.这应该是相对无痛的,因为它只需要一个视图和一个模板,模板可以利用ModelForms.
我建议你创建一个Person模型,其中包含一个OneToOneField到User模型(管理站点用户模型).有些像这样..
from django.contrib.auth.models import User class Person(models.Model): """The person class FKs to the User class and contains additional user information including userImage, country, etc""" user = models.OneToOneField(User, related_name='person_fk') url = models.URLField(max_length=255, blank=True) country = models.CharField(max_length=2, blank=True) state = models.CharField(max_length=50, blank=True) zipCode = models.IntegerField(max_length=7, blank=True, null=True) userImage = models.ImageField(upload_to=generate_filename, blank=True, null=True)