IDU-IFP / ifp-flask-study

📖 IFP's Flask Framework study repository
0 stars 6 forks source link

Ep04 : 블로그 웹 애플리케이션 개발(1) - 로그인 처리하기 #4

Open TGoddessana opened 2 years ago

TGoddessana commented 2 years ago

EP04에서는 로그인을 처리하는 법에 대해 다룹니다.

아래의 기능을 구현할 것입니다.

  1. 로그인, 로그아웃, 회원가입
  2. 회원가입 시 비밀번호 암호화
  3. flask-wtf 를 이용한 폼 데이터 검증
  4. 에러 시 flash() 를 이용한 에러 메시지 출력
  5. 성공 시 flash() 를 이용한 성공 메시지 출력
  6. 로그인 시 동적으로 변하는 네비게이션 바

(과제) 아래의 블로그 글을 참고하여, 위의 기능을 구현하는 과정을 블로그에 정리해 링크를 남겨 주세요.

https://gdsanadev.com/14464

  1. 최대한 가이드를 작성했지만, 글 작성 시 빼먹은 부분이 있을 수 있습니다.
  2. 하지만, 흐름을 잘 이해한다면 잘 동작하는 코드를 작성하실 수 있을 것입니다.
  3. 가이드에서 작성된 코드들보다 효율적인 코드를 작성하는 방법을 찾으시면, 그 과정도 블로그에 공유해 주세요!

추가 (따로 정리 안 하셔도 됩니다):

FSADeprecationWarning: SQLALCHEMY_TRACK_MODIFICATIONS adds significant overhead and will be disabled by default in the future. Set it to True or False to suppress this warning. 이라는 경고가 뜬다면, 아래의 코드를 init.py 에 추가해 주세요.

image

추가 2 (필수는 아니지만, 읽어보신다면 앞으로의 코드를 이해하는 데에 도움이 될 것입니다):

포스팅 중간에, User.query.get(int(id)) 라는 코드가 보일 겁니다. 포스팅을 보면 아시겠지만, User 는 우리가 models.py에서 정의한 사용자 모델입니다. 그리고 해당 클래스는 flask-sqlalchemy의 db.Model을 상속받아 만들어졌습니다.
User.query.get(int(id)) 의 의미는 아래와 같이 sqlalchemy에 정의되어 있습니다. primary key 를 받아서, 그에 맞는 유저 인스턴스를 반환한다고 적혀 있죠? 예를 들면, User.query.get(20) 의 코드는 데이터베이스에 있는 id=20 인 유저를 반환할 겁니다.

image

이는, 우리가 2주차에서 수행했던 두 번째 과제에서 데이터베이스를 다루는 것과는 꽤 다른 방식입니다. 이렇게 파이썬의 객체를 사용해서 데이터베이스를 다루는 것을 "ORM" 이라고 합니다. 그리고, 이것은 파이썬에만 국한되는 이야기가 아니죠. java에도 ORM이 있고, php에도 존재합니다.
아무튼,

image

위의 경로에 가면, 실제로 sqlalchemy가 지원하는 여러 메소드들을 확인할 수 있습니다. 예컨대, User.query.all() 을 사용한다면 모든 유저들의 목록이 파이썬의 리스트로 반환될 겁니다. 실제로, 아래와 같이 구현되어 있음을 확인할 수 있습니다.

image

앞으로는 2주차의 방식이었던 "INSERT INTO..." 처럼 질의문을 직접 날리는 방식이 아닌, User.query.어쩌고 와 같은 코드를 사용해서 데이터베이스를 다룰 것이고, 이에 익숙해지면 앞으로 수행할 블로그 개발에 큰 도움이 될 것이라 생각합니다.
https://flask-sqlalchemy.palletsprojects.com/en/2.x/queries/ 플라스크 문서에 아주 간단한 예제가 있으니 참고하시는 것을 추천합니다.

2gang commented 2 years ago

https://rud0503.tistory.com/7

ryukyung commented 2 years ago

https://ryu-ddo.tistory.com/396

youngjoo00 commented 2 years ago

https://youngjoo-com.tistory.com/7

ji1210h commented 2 years ago

https://ji1210h.tistory.com/274

hyoeunla commented 2 years ago

https://sophia02.tistory.com/135

D-Sup commented 2 years ago

https://substory.tistory.com/44

overtae commented 2 years ago

https://overtae.github.io/blog/python%20flask/flask-login/

leesunuk commented 2 years ago

https://leesunuk.tistory.com/109