Python 在django中扩展用户模型后,我无法登录

Python 在django中扩展用户模型后,我无法登录,python,django,login,Python,Django,Login,这就是我扩展用户模型的方式: class User(AbstractBaseUser): email = models.EmailField(verbose_name='email',max_length=255,unique=True, db_index=True,) username = models.CharField(verbose_name='username', max_length=255, unique=True) first_name = models

这就是我扩展用户模型的方式:

class User(AbstractBaseUser):
    email = models.EmailField(verbose_name='email',max_length=255,unique=True, db_index=True,)
    username = models.CharField(verbose_name='username',  max_length=255, unique=True)
    first_name = models.CharField(verbose_name='first_name',  max_length=255, blank=True)
    last_name = models.CharField(verbose_name='last_name',  max_length=255, blank=True)
    is_active = models.BooleanField(default=True)
    is_admin = models.BooleanField(default=False)
    objects = UserManager()
    avatar = models.ImageField(upload_to='profile_images', blank=True)

    USERNAME_FIELD = 'username'
    REQUIRED_FIELDS = ['username']

    def get_full_name(self):
        return '%s %s' % (self.first_name, self.last_name,)

    def get_short_name(self):
        return self.username

    def __unicode__(self):
        return self.email

    def has_perm(self, perm, obj=None):
        return True

    def has_module_perms(self, app_label):
        return True

    @property
    def is_staff(self):
        return self.is_admin
它运行良好,但在新用户注册后,我无法使用他的用户名和密码登录 在我的数据库中,我现在有两个用户表

验证用户-旧用户

博客用户-新的扩展用户

我只能使用auth\u user的用户登录

这就是我在views.py中登录的功能:

@csrf_protect
def loginn(request):
    c = {}
    c.update(csrf(request))
    return render_to_response("login/login.html", c)


@csrf_protect
def auth_view(request):
    username = request.POST.get('username', '')
    password = request.POST.get('password', '')
    user = authenticate(username=username, password=password)
    if user is not None:
        if user.is_active:
            login(request, user)
            return render_to_response('login/loggedin.html',RequestContext(request))
    else:
        return HttpResponseRedirect('/posts/invalid')

那么,如何使用新的扩展表中的用户登录?

为了允许在
authenticate()
方法中使用自定义用户模型,Django需要设置
AUTH\u user\u model
设置。

对于示例代码,它将是settings.py中的
AUTH\u USER\u MODEL='blog.USER'

authenticate()
方法调用
get\u user\u model()
,它会去查找是否设置了AUTH\u user\u model设置,然后将其用作要进行身份验证的模型的基础

请务必阅读有关在Django中替换自定义用户模型的文档。在决定切换auth用户模型之前,您应该注意一些注意事项

如果可能的话,我建议只扩展基本的auth用户模型,以包括您需要的任何特定于应用程序的字段,因为您似乎仍在通过用户名登录用户。