用户为无,并且正在登录django

时间:2019-02-28 10:48:25

标签: django

我正在创建一个注册和登录,在这里我要注册并将凭据保存在数据库中,并使用相同的凭据登录。即使在验证时打印用户名和密码,也说用户为空。

Views.py
--------
def Login(request):
    form = login_form(request.POST or None)
    if form.is_valid():
        username = form.cleaned_data.get("username")
        password = form.cleaned_data.get("password1")
        print (username,password)
        user = authenticate(request,username=username, password=password)
        print('user is', user)
        if user is not None and user.is_active:
            print ('entered loop')
            login(request,user)
            return redirect('/home/')
        else:
            print ("username and password are incorrect ")
    else:
        form = login_form()
    return render(request, 'Login.html', {'form': form})



settings.py:
---------------
AUTHENTICATION_BACKENDS = ("django.contrib.auth.backends.ModelBackend",
                           'django.contrib.auth.backends.RemoteUserBackend',)
AUTH_USER_MODEL = 'auth.User'

urls.py:
---------
urlpatterns = [
    url('admin/', admin.site.urls),
    url('App/', include('django.contrib.auth.urls')),
    url(r'^signup/', views.signup,name='signup'),
    url(r'^Login/', views.Login,name='Login'),
    url(r'^Logout/', views.Logout,name='Logout'),
models.py:
-----------
class MyUserManager(BaseUserManager):
     def create_user(self, fname,lname,username, password):
          """
          Creates and saves a User with the given username, date of
          birth and password.
          """
          if not username:
               raise ValueError('Users must have an username')
          user = self.model(username=username,fname=fname,lname=lname)
          user.set_password(password)
          user.is_active = True
          user.save(using=self._db)
          print (user)
          return user


     def create_superuser(self, fname,lname,username, password,email=None):
          """
          Creates and saves a superuser with the given username and password.
          """
          user = self.create_user(
               fname=fname,
               lname=lname,
               username=username,
               password=password,
          )
          user.is_admin = True
          user.is_superuser = True
          user.save(using=self._db)
          return user

class Event(AbstractBaseUser):
     fname = models.CharField('fname', max_length=120)
     lname = models.CharField('lname',max_length=120)
     username = models.CharField('username',max_length = 60,unique=True)
     password = models.CharField('password',max_length=120,default='pavi@2789')

     USERNAME_FIELD = 'username'
     REQUIRED_FIELDS = ['fname','lname']

     objects = MyUserManager()

     def __unicode__(self):
          return self.username

     class Meta:
          # managed = False
          db_table = "user"

输出:

uname xxxxxx @ 2789 用户为无

尽管正在打印用户名和密码,但用户还是没有。但是当我在dadtabase中签入时,用户在那里。我不知道这里出了什么问题。

1 个答案:

答案 0 :(得分:1)

localhost,而您显然已经使用AUTH_USER_MODEL = 'auth.User'模型创建了用户。

如果要将用户保留在自己的表Event中,请修改AUTH_USER_MODEL以告诉django用户的位置:

Event