PyCharm과 함께 DJango와 RestFramework를 활용하여 간단한 게시판 만들기(2)

이번 시간에는 지난 시간에 예고한 대로, 몇 가지 다른 주제를 통하여 게시판 프로젝트를 조금 더 진척 시켜 보려고 합니다. 오늘 진행할 주제는 아래와 같습니다.

– Pagination 을 통하여 Pagin 손 쉽게 하기
– Template 안에서 Logic 만들기

게시물 보이기

가장 먼저 진행할 사항은, 다름 아닌 게시물 보이기! 게시판 형태로 게시물들을 정리하고 이를 표현하는 방법을 먼저 진행할 겁니다. 모델링을 하긴 했지만, 이를 웹 페이지로는 표현하지 않았으니까요. 그럼, 바로 시작해 볼까요?

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

이제 시~작!
지난 포스팅에 이어서, post_list.html 파일을 먼저 수정해 봅시다.
for 문 사용하기
Django template language 문법을 이용하여, 간단하게 post_list 를 순회해서 출력하도록 해 봅시다. post_list 는 view 에서 데이터를 셋팅하게 될 것이고, 여기서는 이 데이터를 출력만 하게 될 겁니다. template language의 경우, 제어문은 {% %} 로 묶여서 쓰여지게 됩니다.
테이블 태그 쓰기
테이블 구조를 만들 것이니, 간단하게 테이블 구조를 만들어 줍시다.
헤더 설정
제목과 작성자를 헤더에 넣어주고…
변수 출력하기
내용을 넣어 줍니다. template language 에서 변수에 접근하는 방법은 {{ }} 로 감싸서 쓰게 됩니다. PHP나 ASP, JSP 등과 유사한 문법으로 사용하시면 됩니다.
모델 참고
넘어가는 데이터는 지난번에 만들어둔 Post 객체가 넘어갈 겁니다. 따라서 여기에 있는 필드 들을 사용하게 될 겁니다.
view 고치기
이제 view를 살짝 고쳐 봅시다.
모델 가져오기
post_list 에 Post 모델의 전체 데이터를 넘겨 봅시다.
코드 정리
간단하게 코드도 정리하고….
서버 실행!
서버를 켜 봅시다.
결과 확인!
제목과 작성자는 테이블 헤더로 잘 나오고 있는데… 아무런 데이터가 없네요?? 왜 그런지 한번 살펴 볼까요?
브레이크 포인트 걸기
PyCharm Professional Edition 에서는 템플릿 디버깅도 허용합니다. 저희가 원하는 위치에 Break point를 찍고….
데이터가 비어있네요!
웹 페이지를 새로고침 해봅니다. post_list 가 빈 리스트 ([]) 로 나오네요? 그러고 보니, 저희는 데이터를 넣은 적이 없네요…. 데이터를 넣으러 가 볼까요?
Admin 접근하기
Django 1.7 부터 기본으로 설치되는 admin 페이지에 접근해 봅시다. 서버 주소에 /admin 으로 접속하면, 로그인 화면을 만날 수 있습니다.
어, 없다!!
……하지만 ID와 비번이 없네요… admin / admin 인줄 알았더니…!!
슈퍼 유저 만들기
manage.py 를 통해서 createsuperuser 라는 명령을 내려, 슈퍼 유저를 한명 만듭시다.
ID 생성하기
간단하게 ID와 비밀번호를 설정 합시다. 화면에는 가렸지만, Password 는 화면에 출력됩니다!
원하는 데이터가 없네요!
그리고 로그인을 했더니… 짜잔!! 뭔가 저희가 필요한 정보가 100% 다 있지는 않은거 같습니다. Post 데이터를 등록하고 관리해야 하니까… 조금, 설정을 더 건드려 볼까요?
Post 등록
간단하게 각 App 마다 있는 admin.py 파일에 Admin 페이지 관련 정보들을 기입해 둡니다. 일단 여기서는 Post 모델을 등록하면 되니까, Post를 등록하도록 하죠.
포스트!
그리고 다시 접속 했더니, Post 가 뙇!
데이터 넣기
Post 관리에 들어가 보면, 아무런 데이터가 없는 것을 볼 수 있습니다. Add post 버튼을 눌러서 데이터를 몇 개 넣어 볼까요?
Post 추가하기
Add post 화면 입니다. 저희가 설정해둔 Model 데이터들이 여기 나오네요. Author 의 경우, ForignKey로 User에 연결이 되어 있다 보니 User에 있는 사용자(현재는 admin)만 표시 됩니다. + 버튼을 눌러 사용자부터 추가해 볼까요?
사용자 생성하기
이렇게 새 사용자 팝업 창이 뜹니다. 간단한 데이터만 입력해도 되니까….
테스틱~ 테스틱~
정말 테스틱 한 ID와 비밀번호로 만들어 보겠습니다.
아자!
이제 test1 사용자가 생성되어서 Author 에서 선택할 수 있게 되었습니다. 나머지 내용을 채워 볼까요?
작성하기
정직한 제목, 정직한 내용을 적어 봅니다.
데이터 추가 완료!
그리고 board 페이지를 새로 고쳐 보면… 뙇!
7가지 무지개~
그렇게 정직하게 7개를 더 넣어봤습니다.
오오!
그리고 확인해 보니 넣어진 데이터들도 모두 잘 나오네요.
Paginator 사용하기!
이제는 페이지 기능을 위해 Paginator 를 사용해 보도록 합시다. 먼저 django.core.paginator 에 포함된 Paginator 클래스를 임포트 하고,
튜토리얼 내용이 저래요
Django 튜토리얼에도 나오는 방법대로 코드를 작성해 봅니다. GET 파라메터로 page가 온다고 가정하고 데이터들을 건드려 봤습니다.
5개 자르기!
Paginator 를 통해, 데이터 5개 단위로 자르게 했더니 5개만 잘 나오네요.
2페이지!
GET 파라메터로 page 값을 넘겨도 보니, 잘 넘어 가지는 것 같네요.
페이지 1!
page=1 파라메터도 잘 작동하구요.
데이터 추가하기
그리고 좀 더 디테일한 정보를 위해, 현재 페이지 / 총 페이지 수 등을 더 넘겨 봅시다.
잠시만요~ 템플릿 수정하고 가실께요!
그리고 넘어오는 데이터에 맞게 템플릿의 내용도 조금 수정할께요.
range 붙이기
아차, 넘기기 전에 템플릿 에서는 바로 활용을 할 수 있도록 view 단에서 넘어갈 데이터를 잘 다듬어 줍시다. for 문을 위해 range로 리스트를 만들어서 넘기도록 하고,
수정!
0 부터 시작하니 1 ~ n + 1 까지 range 가 되도록 수정해 줍시다.
page 변수명 바꾸기
넘어갈 page도 for 문에서 같은 이름을 쓰니까, 여기서 current_page로 바꿔서 넘겨주고…
int 붙이기
템플릿 if 문에서 사용해도 문제가 없도록 int 를 붙여서 넘기도록 합시다.
마무리!
마지막으로, 템플릿을 좀 더 수정하여 current_page와 page가 같지 않을 시에 a 태그를 통해서 ?page= 를 붙이도록 하고 / current_page와 page가 같으면 bold 스타일을 추가하도록 코드를 수정 합니다.
완성!!
그렇게 했더니 이렇게!!! 뙇!!

마치며…

사실, 오늘 포스팅은 조금 급하게 적어서… 내용에 두서가 없는 거 같기도 하네요. 굉장히 축약 되어 버렸는데…. 차근차근 따라하셔도 아마 대략적인 내용을 알 수 있을 겁니다. 이번 시간에 하려고 했지만, 못했던 내용들은 다음 포스팅 때 알아 보도록 하겠습니다. 아래는 다음 포스팅 때 진행 하고자 하는 내용들 입니다:)

– 사용자 권한 부여하기
– 글쓰기 기능 구현 및 POST 기능 구현하기
– 게시판에 REST Api 만들어 붙이기

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
17 PyCLIPS Python Module file 졸리운_곰 2017.05.31 1481
16 A Flask API for serving scikit-learn models file 졸리운_곰 2017.05.31 589
15 tensorflow-kr.pdf [텐서플로우 튜토리얼] 한글 번역본 file 졸리운_곰 2016.11.25 4476
14 TensorFlow의 기본 사용법 졸리운_곰 2016.11.25 604
13 텐서플로우 시작하기 file 졸리운_곰 2016.11.25 773
12 Integrating Python and R Part III: An Extended Example file 졸리운_곰 2016.11.16 527
11 Integrating Python and R Part II – Executing R from Python and Vice Versa 졸리운_곰 2016.11.16 1543
10 Integrating Python and R into a Data Analysis Pipeline – Part 1 졸리운_곰 2016.11.16 635
9 Calling R from Python file 졸리운_곰 2016.11.16 450
8 TensorFlow의 기본 사용법 졸리운_곰 2016.06.11 725
7 텐서플로우 시작하기 file 졸리운_곰 2016.06.11 774
6 기계 학습의 A to Z : 인구 변화 시각화와 예측 file 졸리운_곰 2015.05.21 1736
5 기계 학습의 A to Z : scikit-learn을 활용한 기계 학습(문서 분류) file 졸리운_곰 2015.05.21 2402
4 기계 학습의 A to Z : IPython notebook과 scikit-learn을 활용한 기계 학습 file 졸리운_곰 2015.05.21 2006
3 기계 학습의 A to Z : scikit-learn을 활용한 기계 학습 (군집화, Clustering) file 졸리운_곰 2015.05.21 2084
2 기계 학습의 A to Z : scikit-learn을 활용한 기계 학습 (차원 축소) file 졸리운_곰 2015.05.21 2182
1 기계 학습의 A to Z : scikit-learn을 활용한 기계 학습(모델 평가) [1] file 졸리운_곰 2015.05.21 1411
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED