当前位置:  开发笔记 > 编程语言 > 正文

django admin的有效用例?

如何解决《djangoadmin的有效用例?》经验,为你挑选了2个好方法。

我想构建一个django站点,其中某组可信用户可以编辑他们的个人资料信息.让每个可信用户通过django管理界面是否有意义?我只希望他们能够看到和编辑他们自己的信息(显然).似乎这不符合django人定义"信任"的方式,特别是粗体位......

来自The Django Book,第18章:

管理员旨在供您,开发人员信任的人使用.这不仅仅意味着"已经过身份验证的人",这意味着Django假设您的内容编辑可以信任做正确的事情.

这意味着没有用于编辑内容的"批准"流程 - 如果您信任您的用户,则无需批准他们的编辑.它还意味着权限系统虽然功能强大,但不支持基于每个对象限制访问.如果您信任某人编辑他们自己的故事,您相信他们不会在未经许可的情况下编辑其他任何人.

这个用例是否适合django的管理模块,或者它只是一个不受信任的用户的专用视图?



1> Soviut..:

不,Django管理员不适合个人用户配置文件,每个用户都可以查看和编辑所有其他用户配置文件.这更适合需要一次管理所有用户的管理员.

您需要构建的是用户个人资料页面.Django已经有一个很好的登录系统,由django.contrib.auth模块提供.您可以轻松地将其集成到您的页面中,以及Django管理员用于对用户进行身份验证的确切内容.

接下来,您将需要构建一个简单页面,根据用户模型公开特定用户的配置文件信息.这应该是相对无痛的,因为它只需要一个视图和一个模板,模板可以利用ModelForms.


可以限制管理员,因此您只能编辑自己的个人资料; 但我不推荐这个用例.+1

2> aatifh..:

我建议你创建一个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)

推荐阅读
mylvfamily
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有