오늘 한 일(회고)
- 파이썬 장고 실무 기초 2주차 수강
- 원격 강의 숙제 풀이
- 원격 강의 숙제는 Django의 MVT구조에서 View에 관한 문제가 나왔다.
1) 회원가입 중복방지
- 분기문을 조금 수정해서 중복 방지를 할 수 있었다.
- Line 26에서 filter라는 메써드를 사용해 주었다.
Model에서 저장한 객체들을 매개 변수를 이용하여 일치하는 새 쿼리셋을 반환해준다.
따라서 사용자가 입력한 username을 filter를 이용해 찾을 수 있다면, 회원가입 저장하지않고 다시 회원가입 페이지를 띄워주어 중복을 방지할 수 있다.
from django.shortcuts import render, redirect
from .models import UserModel
def sign_up_view(request):
if request.method == 'GET':
return render(request, 'user/signup.html')
elif request.method == 'POST':
username = request.POST.get('username', None)
password = request.POST.get('password', None)
password2 = request.POST.get('password2', None)
bio = request.POST.get('bio', None)
if password != password2:
return render(request, 'user/signup.html')
else:
exist_user = UserModel.objects.filter(username=username)
if exist_user:
return render(request, 'user/signup.html')
else:
new_user = UserModel()
new_user.username = username
new_user.password = password
new_user.bio = bio
new_user.save()
return redirect('/sign-in')
2) 사용자 조회하기
- 분기분에서 세션을 이용하여 사용자 이름을 저장할 수 있다.
def sign_in_view(request):
if request.method == 'POST':
username = request.POST.get('username', None)
password = request.POST.get('password', None)
me = UserModel.objects.get(username=username)
if me.password == password:
request.session['user'] = me.username
return HttpResponse(me.username)
else:
return redirect('/login')
elif request.method == 'GET':
return render(request, 'user/signin.html')
- 이전에는 세션에 대해 잘 몰랐지만, 이번 강의를 통해 조금이나마 알 수 있었다.
- 나에겐 조금 어려운 개념이라 조금 공부해 보았다.
Session(세션)?
- 유저가 웹사이트에 접속하게 되면, 서버가 유저에게 sessionID를 부여해준다.
- 유저가 서버와 통신 할 때마다 이 sessionID를 이용하여 유저를 구분할 수 있게 해준다.
- sessionID는 랜덤한 문자열이기 때문에 외부에서 접근하여도 개인 로그인 정보와 매칭이 불가능하다.
- user에 관한 부분은 Django에서 지원해주긴 하지만, 다시 한번 알아보는 계기가 되었다. 브라우져에서 "쿠키삭제" 이런걸 왜 하는지 조금 이해가 되는 시간이었다.
내일 할 일
- 주말이다.. 휴식시간을 가지고 싶다.
- 하지만 백준 알고리즘 1문제 풀기!!!