로그인 로그아웃 회원가입
장고에서 기본적으로 제공해주는 라이브러리를 쓰면 된다.
해당 앱의 views.py에
x
from django.contrib.auth.models import User
from django.contrib import auth
이 2개를 import해주고 사용하면 된다.
이제 html form태그를 이용해서 기본적인 페이지를 만들어 주고 아래를 따라오길 바란다.
login.html
{% extends 'header.html'%}
{% block contents %}
<h1>로그인</h1>
<form action="" method="POST">
{% csrf_token %}
ID
<br>
<input type="text" name = 'loginID'>
<br>
PassWord
<br>
<input type="text" name = "loginPassword">
<br><br>
<input type="submit" value="로그인">
</form>
{% endblock %}
위의 extends header.html 은 이전 시간에 했던 템플릿 상속이다
상속 받은내용은 그냥 기본적인 부트스트랩 네브바와 링크 정보다
{% csrf_token %}
보안을 위해서 사용되는 것이다.
signup.html
{% extends 'header.html' %}
{% block contents %}
<h1>회원가입</h1>
<form action = "" method="POST">
{% csrf_token %}
ID
<br>
<input type="text" name = 'ID'>
<br>
PassWord
<br>
<input type="text" name = 'password1'>
<br>
한번 더 입력하세요
<br>
<input type="text" name = 'password2'>
<br>
<input type="submit" value="제출">
</form>
{% endblock %}
딱히 설명 할 건 없다.
회원가입 함수 (views.py)
x
def signup(request):
if(request.method =='POST'):
id = request.POST['ID']
password1 = request.POST['password1']
password2 = request.POST['password2']
if(password1 == password2):
user = User.objects.create_user(username=id,password=password1)
auth.login(request,user)
return redirect('home')
return render(request, 'signup.html')
회원가입 할 때 보통 비밀번호를 2번 입력한다.
입력용 비밀번호와 확인용 비밀번호
여기선 일단 간단하게 비밀번호가 같을때만 회원가입을 하도록 했다(이미 중복되는 아이디가 있을경우는 나중에 다루도록 하겠다)
아까 위에서 말했던
from django.contrib.auth.models import User
from django.contrib import auth
이걸 import 해준 상태로 진행해야 한다 !!
user = User.objects.create_user(username=id,password=password1)
이건 장고에서 제공해주는 User클래스를 기반으로한 쿼리셋 매소드이다.
유저 정보를 생성해주는 것이다
로그인 함수 (views.py)
xxxxxxxxxx
def login(request):
if(request.method =='POST'):
loginID = request.POST['loginID']
loginPW = request.POST['loginPassword']
user = auth.authenticate(request, username =loginID, password = loginPW)
if user is not None:
auth.login(request,user)
return redirect('home')
else:
return render(request,'login.html',{'error':'아이디 혹은 비밀번호가 틀렸습니다'})
else:
return render(request,'login.html')
user = auth.authenticate(request, username=loginID, password=loginPW)
구문을 넣어준다.
이는 데이터베이스에서 전달받은 username과 password로 사용자가 존재하는지 판단한다.
만약 사용자가 존재한다면 로그인을 하고, 존재하지 않는다면 에러를 출력하는 코드다.
if User is not None: 이 부분은 사용자가 존재하는 경우이다
로그아웃 함수
def logout(request):
if request.method == 'POST':
auth.logout(request)
return redirect('home')
return render(request,'signup.html')
생각보다 간단하다.
'Django' 카테고리의 다른 글
13. Paginator (0) | 2020.05.11 |
---|---|
11. 상속 (0) | 2020.03.25 |
10. static과 media (0) | 2020.03.25 |
09 BlogProject(2) (0) | 2020.03.23 |
08 BlogProject (1) (0) | 2020.03.23 |