(2번째 프로젝트 하는 중)
- 더미 데이터를 만들어 게시글 테이블을 채워넣었다. 게시글을 저장하는 테이블은 하나이고, 그 안에서 카테고리에 따라 글이 네 가지로 분류된다. 그래서 저렇게 흩어진 게시글 번호가 나타난다.
조회수 항목을 추가하고, 날짜 형식을 제대로 (YYYY-MM-DD 형식으로) 출력하게 만들었다. 게시글을 클릭해서 조회하고 나오면 1씩 값이 늘어나 있는 것을 볼 수 있.
- 코드를 대폭 간단하게 만들었다. 예를 들면 카테고리별로 다른 데이터가 없던 시절에는
@app.route('/mainBoard-layout') def mainBoardLayout(): category1, category2, category3, category4 = = _get_mainBoard_posts() return render_template('index.html', component_name='mainBoard', category1_list=category1, category2_list=category2, category3_list=category3, category4_list=category4) def _get_mainBoard_posts(): data1 = text(''' SELECT actor_id, first_name, last_name, city, view FROM copy_actor2 AS a LEFT join copy_city2 AS c ON a.actor_id = c.city_id ORDER BY actor_id DESC; ''') category1 = app.database.execute(data1).fetchmany(5) data2 = text(''' SELECT actor_id, first_name, last_name, city, view FROM copy_actor2 AS a LEFT join copy_city2 AS c ON a.actor_id = c.city_id ORDER BY actor_id DESC; ''') category2 = app.database.execute(data2).fetchmany(5) data3 = text(''' SELECT actor_id, first_name, last_name, city, view FROM copy_actor2 AS a LEFT join copy_city2 AS c ON a.actor_id = c.city_id ORDER BY actor_id DESC; ''') category3 = app.database.execute(data3).fetchmany(5) data4 = text(''' SELECT actor_id, first_name, last_name, city, view FROM copy_actor2 AS a LEFT join copy_city2 AS c ON a.actor_id = c.city_id ORDER BY actor_id DESC; ''') category4 = app.database.execute(data4).fetchmany(5) return category1, category2, category3, category4
이렇게 if문으로 4번 비슷한 내용을 작성하던 것을, 게시글 테이블에 카테고리 필드가 생기고 카테고리 값(1~4)을 인수로 넘겨줌으로써 아래와 같이 코드가 간단해졌다.
@app.route('/mainBoard-layout') def mainBoardLayout(): category1 = _get_mainBoard_posts(1) category2 = _get_mainBoard_posts(2) category3 = _get_mainBoard_posts(3) category4 = _get_mainBoard_posts(4) return render_template('index.html', component_name='mainBoard', category1_list=category1, category2_list=category2, category3_list=category3, category4_list=category4) def _get_mainBoard_posts(category): data = text(''' SELECT b.id, title, u.user_nick, DATE_FORMAT(b.created_at, '%Y-%m-%d'), view FROM board as b LEFT JOIN board_category AS c ON b.category_name = c.category_name LEFT JOIN user AS u ON b.user_id = u.id WHERE c.id = :category ORDER BY b.id DESC; ''') placeholder = {'category': category} result = app.database.execute(data, placeholder).fetchmany(5) return result
- 아이디어를 얻었는데, 일단 GET등을 받는 API 메소드를 만들고 그 메소드를 내부적으로 불러오는 다른 렌더링 메소드를 다시 만드는 식으로, 서버사이드 렌더링의 간편함과 API 기능 구현의 두 마리 토끼를 모두 잡을 수도 있지 않을까? 일단 그렇게 해도 문제는 없겠지?
- 어제 먹통된 파이참 프로젝트에서 새 프로젝트 폴더로 얼른 옮겨갔다. 새로운 곳에서는 파이썬 인터프리터가 잘 작동한다. git에 연결은 아직이다.
- MySQL이 기본으로 주는 데이터베이스들과 테이블들에서 적절한 항목들을 뽑아서 합치고 묶고 내가 만든 테이블에 값으로 넣고 하는 과정이 시간이 좀 걸렸다. 괜히 했나 싶기도 하지만… 일단 600개쯤 되는 게시글 데이터를 보니 뿌듯하다. 유저 테이블의 유저 id와의 연계까지 기가 막힌 (전혀 user 데이터가 아닌 테이블들에서 가져온 값들이라 기가 막힌) 설계다. 음. 역시 뿌듯하군. 쿼리문 연습 엄청 했다고 생각하자. 아! 쿼리문 새로 알게 된 것들이 많다. 여기에 쓰기엔 너무 많고 나중에 정리해서 올려봐야겠다.
- 오늘 팀원들과 의논을 많이 할 수 있어서 좋았다. 우리 모두 우당탕쿵탕 하면서도… 모두 적극적으로 달려들고 있다. 나였으면 우리 팀원들이 하는 것만큼 한 문제를 붙잡고 오랜 시간 구글링을 하지 못했을 것을 안다. 금방 해결되는 문제로 검색해보는 것 말고 찾아봐도 잘 안되는 걸 붙잡고 있는 게 제일 힘든 일인데… 구글링 체력이란 게 있다면 다들 그 총량이 대단하다고 생각된다. 덩달아 나도 더 열심을 냈다. 내일도 화이팅해서 잘 마무리하자..!
Uploaded by N2T