Django身份验证用户

Django身份验证用户,django,authentication,Django,Authentication,我正在开发具有多种类型用户的网页,每种用户都具有不同的配置文件属性。我想使用内置的身份验证系统,但: a) 我想使用django注册。 b) 我只能将User.get_profile指向一个配置文件模型 如何以良好的方式实现这一点?我没有使用django注册,所以我不知道它需要什么。对于问题的第二部分,一种方法是 将用户档案与每个用户 添加不同类型的ProfileProperty类,并使用 我知道,这有点牵强 我不是python、django或数据库方面的专家,但几周前我遇到了一个类似的问题,在

我正在开发具有多种类型用户的网页,每种用户都具有不同的配置文件属性。我想使用内置的身份验证系统,但:

a) 我想使用django注册。 b) 我只能将User.get_profile指向一个配置文件模型


如何以良好的方式实现这一点?

我没有使用django注册,所以我不知道它需要什么。对于问题的第二部分,一种方法是

  • 用户档案
    与每个
    用户
  • 添加不同类型的
    ProfileProperty
    类,并使用
    我知道,这有点牵强

    我不是python、django或数据库方面的专家,但几周前我遇到了一个类似的问题,在#django上有人建议我使用泛型关系来实现这一点

    我创建了一个用户配置文件模型,它(通过OneToOnefield)与“true”配置文件相似,并且使用contrib.content-type和泛型关系,我能够使用几种不同的文件类型

    请注意,如果您不怕在每个get_profile()上再次访问数据库,那么这应该对您有用

    另一种方法是创建一个包含所有配置文件类型的所有字段的大表,并使用某种钩子(或重新实现自定义save())根据配置文件类型检查失效字段。但对我来说,这看起来很复杂,特别是如果你想有很多不同的配置文件类型

    另一种选择是创建一个TextField派生的自定义字段,并将其用作字典的存储,保存时对其进行pickle,加载时从中取消pickle。通过一些黑客攻击,您当然可以将一些模型属性映射到字典键。这将允许很大的灵活性

    免费提示:我还使用fixture测试我的应用程序,忘记检查post_save信号的原始参数是否为True,以防止在使用manage.py loaddata时执行UserProfile创建。正如我在post_save回调中编写的创建“true”配置文件一样,异常是一种奇怪的情况,直到我发现发生了什么

    可用资源: