17일차 개발일지

17일차 개발일지

2021-10-05 일지

2차 프로젝트가 시작 되었다. 지난주에 1차 프로젝트를 마무리 했는데 바로 2차 프로젝트가 시작 되었다. 1차 때 받은 피드백과 진행하면서 느꼈던 개선사항들을 최대한 구현해보려고 한다. JWT 인증 방식을 이용한 로그인 기능과 jinja2 템플릿을 사용한 서버사이드 렌더링 기술 등 심화 강의에 있는 내용들이기 때문에 일단 내일까지 심화를 완강 하기로 하였다.

어느 정도 공부 후에 원하는 기능들을 배분할 예정이다. 이번에는 컨벤션과 세분화된 계획 실천으로 프로젝트를 진행할 것이다.

하루에 30분씩은 다른팀의 github이나 blog를 보면서 시간을 보내고 있다. 더 좋은 방법을 쓰고 있다면 우리 프로젝트에도 적용하기 위함이다. ㅎㅎㅎㅎㅎ 다들 대단하다

Jinja2 템플릿 엔진

템플릿 엔진 이란

지정된 템플릿 양식과 데이터를 합쳐서 HTML 문서를 출력 하는 것. 즉, 웹 페이지를 보여 주는 것

서버 사이드 렌더링 vs 클라이언트 사이드 렌더링

왜 쓰는가 ? 유지보수 용이 재사용성 높음 많은 코드를 줄일 수 있음

렌더링 : 어떠한 웹 페이지 접속 시, 그 페이지를 화면에 그려주는 것

서버 사이드 렌더링 (SSR)

서버 쪽에서 템플릿 HTML에 데이터를 끼워 넣어 완성된 형태의 HTML을 보내주는 방법

전통적인 웹 어플리케이션 방식

요청 마다 서버에서 처리하여 새로고침으로 페이지 응답

서버에 매번 요청을 하기 떄문에 트래픽, 서버 부하가 커짐

왜 쓸까? 검색 엔진 최적화 빠른 페이지 렌더링

클라이언트 사이드 렌더링 (CSR)

자바스크립트에 데이터를 포함해서 보낸 후 , 클라이언트 쪽에서 HTML을 완성 하는 방법

최초 한번 전체 페이지를 다 불러오기 때문에 서버 부담이 덜함

Jinja2 템플릿 언어

Flask 프레임워크에서 사용되는 템플릿 언어

@app.route('/') def main(): myname = "chanhong" return render_template("index.html", name=myname)

Hello, {{ name }}!

{ % ... % } : if , for 등의 흐름 제어문을 할당하는 구분자

변수 저장하기

{% set gu_name = rows[0].MSRSTE_NM %} {% set gu_mise = rows[0].IDEX_MVL %} {{ gu_name }}: {{ gu_mise }}​ for 문 사용

{% for row in rows %} {% set gu_name = row.MSRSTE_NM %} {% set gu_mise = row.IDEX_MVL %} {{ gu_name }}: {{ gu_mise }} {% endfor %}​ if문 사용

{% for row in rows %} {% set gu_name = row.MSRSTE_NM %} {% set gu_mise = row.IDEX_MVL %} {{ gu_name }}: {{ gu_mise }} {% endfor %}​

참고

from http://l0u0l.tistory.com/27 by ccl(A) rewrite - 2021-10-05 21:26:50