2022-09-23 TIL sparta

최해민·2022년 9월 24일
0

오늘 한 일(회고)

  • 파이썬 장고 실무 기초 2주차 수강
  • 원격 강의 숙제 풀이
    • 원격 강의 숙제는 Django의 MVT구조에서 View에 관한 문제가 나왔다.
      1) 회원가입 중복방지
      - 분기문을 조금 수정해서 중복 방지를 할 수 있었다.
      - Line 26에서 filter라는 메써드를 사용해 주었다.
      Model에서 저장한 객체들을 매개 변수를 이용하여 일치하는 새 쿼리셋을 반환해준다.
      따라서 사용자가 입력한 username을 filter를 이용해 찾을 수 있다면, 회원가입 저장하지않고 다시 회원가입 페이지를 띄워주어 중복을 방지할 수 있다.
# user/views.py
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문제 풀기!!!
profile
안녕하세요

0개의 댓글