繁体   English   中英

django中自定义用户的登录表单

[英]Login form for custom users in django

我创建了一个自定义的User SignUp类。

class SignUp(models.Model):
    userId = models.CharField(max_length=8, blank=False, unique=True)
    Name = models.CharField(max_length=200)
    VehicleNumber= models.CharField(max_length=12)
    ContactNum = models.IntegerField(default=0)
    def __unicode__(self):
        return smart_unicode(self.Name)

我用它来创建一个注册表单。 现在,我没有创建用户登录名的方法。 注意:我不能使用django内置用户,因为他们没有图像字段。

您可以使用和扩展内置模型User 最短的路径是

from django.contrib.auth.models import User
from django.db import models

class UserWithPhoto(User):
    image = models.ImageField()

但是使用用户个人资料是一种更好的做法,您可以在以下文章中阅读有关内容: Django中的用户身份验证

您可以在Django用户个人资料中以及在Django中通过自定义字段扩展User模型来阅读有关内容。

为什么比直接扩展用户模型更好的用户配置文件?

如果扩展用户模型,则更改将应用​​于所有用户。 考虑一下这一点,您可能拥有管理员,开发人员,修订者甚至访客,他们所有人可能都有其他人所没有的某个字段,因此与为每个子类划分User子类相比,为每个子类配置不同的个人档案是更好的解决方案,甚至更糟创建一个包含所有类型用户所需的所有字段的类(只考虑它很痛苦)。

您可以通过添加OneToOneField扩展内置的django用户。

YourCustomUser(models.Model):
    user = models.OneToOneField(User,related_name='profile')
    image = models.ImageField()
    //put here your others attributes

如果您拥有YourCustomUser实例,并且想要访问User内置实例

your_custom_instance.user

如果您具有User内置实例,并且想要检索图像

user.profile.image

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM