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用户模型,以包括您需要的任何特定于应用程序的字段,因为您似乎仍在通过用户名登录用户。