擅长:python、mysql、java
<p>与其直接修改用户类或进行子类化,还可以重新调整现有字段的用途。</p>
<p>在一个站点中,我使用“first_name”字段作为用户的“公开显示的名称”,并在“username”字段(用于url)中填充该字段的slugified版本。我编写了一个自定义的auth后端,允许人们使用自己的“公共名称”或电子邮件地址登录,并且我在注册时强制实现了这两个名称的唯一性。这与其他可重用的应用程序很好地配合,并且不会引入额外的表或查询。</p>
<p>对于另一个网站,我根本不需要用户名,只需要独特的电子邮件。为了满足Django对唯一用户名的需求,我对电子邮件地址进行了散列处理,并将其用作用户名(必须对散列进行base64编码才能将其压缩到30个字符以下)。自定义身份验证后端以允许使用电子邮件登录。</p>
<p>如果向后兼容不是问题的话,我很想看到对django.contrib.auth和用户模型做了很多改进,使它们更加灵活。但在当前的限制条件下,你可以用一点创造力做很多事情。</p>