회원가입, 로그인, 로그아웃 기능은 장고에서 제공하는 함수이용한다.
Django에서 이미 기능을 제공하고 있는 것들을 우리는 가져다 쓰는 것 뿐이다.
from django.contrib.auth.models import User
from django.contrib import auth
from django.contrib.auth.models import User # user에 대한 클래스를 가져와준다.
from django.contrib import auth # 계정에 대한 권한에 대한 것을 가져와준다.
User.objects.create_user()
create_user(username, password)
def signup(request):
if request.method == "POST":
if request.POST['password1'] == request.POST['password2']:
user = User.objects.create_user(username = request.POST['username'], password=request.POST['password1'])
auth.login(request, user)
return redirect('home')
return render(request, 'signup.html')
auth.authenticate()
: 등록된 회원인지 확인auth.login(request, user)
: 로그인def login(request):
if request.method == "POST":
username = request.POST['username']
password = request.POST['password']
#auth.authenticate 라는 말은 DB에서 방금전에 입력한 이 내용이 우리한테 있는 회원명단이 맞는지 확인시켜주는 함수
user = auth.authenticate(request, username=username, password=password)
if user is not None: # is not None = None이 아니라면 = 회원이라면
auth.login(request,user)
return redirect('home')
else:
return render(reuqst, 'login.html', {'error': 'username or password is incorrect'})
else:
return render(request, 'login.html')
auth.logout(request)
: 로그아웃def logout(request):
if request.method == "POST":
auth.logout(request)
return redirect('home')
return render(request,'login.html')
login.html
{% extends 'base.html' %}
{% block contents %}
<h1>Login!</h1>
<!--form태그 POST방식으로 쓸꺼면 보안을 위해서 csrf_token을 써주는게 좋다-->
<!--회원가입과 같은 정보를 처리할때는 POST 방식으로 처리해줘야한다.-->
<form method= "POST" action ="{% url 'login' %}">
{% csrf_token %} <!--보안을 위해서 써주는 난수 발생기, csrf 방해를 방어해주는 것.-->
Username:
<br>
<input name="username" type = "text" value="">
<br>
Password:
<br>
<input name="password" type = "password" value="">
<br>
<br>
<input class="btn btn-primary" type="submit" value="Login">
</form>
{% endblock %}
{% extends 'base.html' %}
{% block contents %}
<h1>Sign up!</h1>
<!--form태그 POST방식으로 쓸꺼면 보안을 위해서 csrf_token을 써주는게 좋다-->
<!--회원가입과 같은 정보를 처리할때는 POST 방식으로 처리해줘야한다.-->
<form method= "POST" action ="{% url 'signup' %}">
{% csrf_token %} <!--보안을 위해서 써주는 난수 발생기, csrf 방해를 방어해주는 것.-->
Username:
<br>
<input name="username" type = "text" value="">
<br>
Password:
<br>
<input name="password1" type = "password" value="">
<br>
Fonfirm Password:
<br>
<input name="password2" type = "password" value="">
<br>
<br>
<input class="btn btn-primary" type="submit" value="sign up">
</form>
{% endblock %}
GET : url 에 정보 전달 된 것이 그대로 노출된다.
POST : url로 직접 정보가 노출되지 않는다.
Method를 지정하지 않으면 GET방식!
그래서 request.GET['xxx']
로 form 입력값을 갖고 온 것이다.