django – 로그인 확인

4275 단어 djangologinlogout
환경 설명
Django:1.10 Python:3.6
내장 User를 AbstractUser 방식으로 확장
# models.py    model

from django.db import models
from django.contrib.auth.models import AbstractUser
# Create your models here.

class UserProfile(AbstractUser):
    #   
    nick_name = models.CharField(max_length = 50, verbose_name = u"  ", default="")

Note: 내장된 User는username과password가 있습니다. 이 두 가지를 검증하려면
# admin.py    model

from django.contrib import admin
from logre.models import UserProfile

admin.site.register(UserProfile)

authenticate에서 사용자 검증
Note:주의해야 할 것은authenticate는 단지 검증일 뿐입니다.login()을 따로 사용하여 로그인을 하고session에 가입하여 로그인 상태를 유지해야 합니다. 이session 정보를 어떻게 얻는지 배워야 합니다.
from django.shortcuts import render
from django.contrib import auth

def login(request):
    if request.method == 'POST':
        input_number = request.POST['input_username']
        input_pwd    = request.POST['input_pwd']

        #             
        user = auth.authenticate(username=input_number,password=input_pwd)

        if user is not None and :
            #       
            now_time        = time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))
            user.last_login = now_time
            user.save()

            auth.login(request,user)

            return render(request,'index.html')

    return render(request,'login.html')

위 판단에 나타난 user.is_active는 사용자 이름 비밀번호가 유효한지 판단하는 데 쓰인다
물론 다른 html 페이지와 url 설정은 여기에 설명이 많지 않다
취소
로그인 얘기가 나온 이상 로그아웃은 여기에 함께 기록합니다
login () 처럼,auth에도 logout () 함수가 있습니다.
# views.py

from django.contrib import auth

def logout_view(request):
    auth.logout(request)
    return HttpResponseRedirect("/login/")

상응하는 URL을 설정해야 합니다
FAQ
때때로 데이터베이스에username과password가 존재하지만 authenticate는 일치하지 않습니다. None 값을 되돌려주면 다음과 같은 방법으로 해결할 수 있습니다.
  • django가 자체로 가지고 있는auth를 사용합니다.사용자 클래스, 우리가modles에서 자체로 만든user의 계정은 때로authenticate () 에서 읽을 수 없습니다.
  • 계정에 등록할 때 함수를 삽입하면 맞춰야 하고objects를 사용해야 한다.create_사용자 () 함수,objects를 사용하세요.create가 삽입되었을 때 명문으로, authenticate () 는 당연히 읽을 수 없습니다
  • auth의login을 직접 가져올 때 login(request,user)을 사용합니다. 함수 이름이 login(request)이면 오류가 발생합니다. 수정하면 됩니다.
    login() takes 1 positional argument but 2 were given

    좋은 웹페이지 즐겨찾기