본문 바로가기
개인 공부/개발

sfoj 개발 - 작성자(글쓴이) 표시하기

by 아메리카노와떡볶이 2021. 8. 25.
728x90
sfoj 개발 - 작성자(글쓴이) 표시하기

https://man-25-1.tistory.com/149

 

sfoj 개발 - 회원가입 구현

sfoj 개발 - 회원가입 구현 기능적인 부분을 구현할 때 마다 포스트를 작성해두어야 기록하기 좋을것 같아서 시리즈 느낌으로 작성해보아야겠다. 현재 개발중인 sfoj의 로그인 화면이다. 현재는

man-25-1.tistory.com

위에 이어지는 글로 이번에는 게시물을 조회할때 작성자까지 알수있도록 구현해보자.

현재는 작성자가 표시되지않는 모습이다.

구현하고자 하는 목표는 사용자가 로그인해서 문제를 업로드할 경우 자동으로 작성한 유저의 아이디를 띄우는 것.

 

먼저 내가 사용하는 Board 모델에 작성자 속성으로 사용할 UserID를 추가한다.

이때 User 모델을 ForeignKey로 적용해서 선언하게 되는데, User 모델은 이전의 로그인과 회원가입에서 사용했던 장고에서 기본으로 제공하는 사용자 모델이다. 따라서 이전에 구현한 회원가입을 하면 이 User 모델에 데이터가 저장되는 것

모델을 변경했으니 잊지말고 makemigrations와 migrate를 진행한다.

 

만약 migrations 과정에서 오류가 난다면,

 

이 문제를 해결하는 방법에는 2가지가 있다.

첫 번째 방법은 UserID 속성을 null로 설정하는 방법이고,

두 번째 방법은 기존 게시물에 추가될 UserID에 강제로 임의 계정 정보를 추가하는 방법이다.

두번째 방법을 위해서는 Select an option 에서 1을 선택하고, 나타나는 프롬포트에서 다시 1 입력

 

그리고 게시글을 작성하는 문제 업로드 함수로 가보자

내가 uploads 화면에서 저장하기 버튼을 눌렀을때, 내가 입력한 정보들은 post 방식으로 request 된다.

따라서 post 방식일때가 내가 문제를 업로드하는 것 !

post 방식일때 입력정보들을 가지고 form을 생성해서 parameter들의 유효성을 체크한다.

그리고 board 객체를 만들어서 현재 로그인한 user를 board의 UserID 속성에 저장하고 list 메소드로 이동한다.

그럼 list 메소드에서는 이전에 생성한 board 객체들을 작성일자순으로 정렬한 객체 board_list를 반환하며

조회 템플릿으로 간다.

여기서 주의할 것. render와 redirect의 차이점 ?
render=> 템플릿으로 이동. 따라서 context를 포함해서 감
redirect => url로 이동, 즉 위의 경우는 또 다른 메소드로 이동. 그렇기때문에 context 전달 불가

 

조회 템플릿에서 구현한 모습

board_list 는 게시글이 작성일자로 정렬되어있는 객체이다. for 문을 활용해서 각 게시글들의 제목/작성일자/작성자를 출력해준다.

 

그 결과 아래와 같은 모습으로 구현되었다.

728x90

댓글