Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python django中自定义用户的登录表单_Python_Django_Django Models - Fatal编程技术网

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

Python django中自定义用户的登录表单,python,django,django-models,Python,Django,Django Models,我已经创建了一个自定义用户注册类 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(def

我已经创建了一个自定义用户注册类

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内置用户,因为他们没有图像字段。

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

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

class UserWithPhoto(User):
    image = models.ImageField()
但是,使用用户配置文件是更好的做法,您可以在以下网站上阅读:

你可以在这里读到这方面的内容

为什么更好的用户配置文件优于直接扩展用户模型?
如果您扩展用户模型,您将对所有用户应用更改。想想看,你可能会有管理员、开发人员、审稿人,甚至来宾,他们都可能有一些其他人没有的字段,因此每个字段都有一个不同的配置文件是比为每个字段子类化用户更好的解决方案,甚至最糟糕的情况是,为所有类型的用户创建一个包含所有字段的类,只需考虑它的危害。

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

YourCustomUser(models.Model):
    user = models.OneToOneField(User,related_name='profile')
    image = models.ImageField()
    //put here your others attributes
如果您拥有CustomUser实例并希望访问用户内置实例

your_custom_instance.user
如果您有用户内置实例,并且希望检索图像

user.profile.image

你可以使用django内置用户,只需要用你的新属性来扩展它。我试过了,但因为我是新手,所以我无法控制自己。你能具体指导我怎么做吗。