항해 5일차

Yeon Jeffrey Seo·2021년 9월 17일
0

항해🚢

목록 보기
3/16

Jinja Template Inheritance를 활용한 코드 재활용

Template Designer Documentation

베이스가 될 부모 템플릿

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  {% block title %}
  {% endblock  %}
</body>
</html>

블럭을 정의할 자식 템플릿

{% extends "index.html" %}
{% block title %}
  <h1> 여기는 타이틀 </h1>
{% endblock title %}  

실제로 렌더링할 템플릿은 자식 템플릿을 던져준다.

URL 뒤의 파라미터 나누기

Jinja로 받아온 id를 통해 url 나눠준다.

{% for posting in postings %} 
{% if ("액션" in posting["genres"]) %} 
{% set imgUrl = posting["imageUrl"]%}
{% set url = posting["url"]%}
<a href="/detail/{{posting['_id']}}"><img src="{{imgUrl}}" alt="" /></a>
{% endif %}
{% endfor %}

각각의 포스팅은 /detail/postingId로 이동한다.

서버측에서는,

@app.route('/detail/<postingId>')
def detail(postingId):
    token_receive = request.cookies.get('mytoken')
    try:
        payload = jwt.decode(token_receive, SECRET_KEY, algorithms=['HS256'])
        posting = db.postings.find_one({"_id": ObjectId(postingId)})
        # 좋아요 수 변경
        # print(posting)
        return render_template('detail.html', posting=posting, isLoggedIn=True)
    except (jwt.ExpiredSignatureError, jwt.exceptions.DecodeError):
        return redirect(url_for("home"))

url 상 postingId를 변수로 받을 수 있게 한다.
그러면 컨트롤러에서 postingId를 활용할 수 있다.
이걸 바탕으로 detail.html과, 렌더링에 활용할 데이터를 함께 던져줄 수 있다.

1주차 회고...

약 2개월 독학하면서 답답했던 부분이 많이 해소된 한 주였다. 개발을 하면서 협업은 어떻게 하는지, 다른 사람들은 어떻게 개발하는지가 궁금해서 항해에 지원했었다. 이런 궁금증은 많이 해소 되었는데, 다만 친절하게 알려주진 않는다. 요약해 보자면,

  1. 회의록 작성을 할 필요가 있다. 미팅이 대화로 끝나버리면, 정확히 논의된 것 없이 흐지부지된 적이 몇 번 있었다. 회의 결론을 정확히 기록하여 팀원들이 모두 숙지를 할 수 있도록 해야 할 것 같다.

  2. 프로젝트의 방향성에 대해 팀원들의 생각을 일치 시킬 것. 어떤 사람은 새로운 라이브러리, 기능 구현에 초점이 맞춰져 있는가 하면, 어떤 사람은 기존 코드를 재사용하는 것에 초점이 맞춰져 있다. 여기에 대해 합의가 이뤄져야 서로간 개발 스타일에 거부감이 없을 것 같다.

  3. 디테일한 개발 일정 수립. 초기 기획 시에 일정을 매우 대충 짰던 것 같다. 월 화 프론트 백 나눠서 수요일부터 합칠게요~ 정도로 계획을 짰다. 문제는 컨트롤러 부분은 완성한 시점에 템플릿이 나오지 않아 컨트롤러 테스트가 많이 늦어졌다. 서버 컨트롤러 구현, CSS가 없는 기본적인 뷰 구현 후 중간 테스트를 하는 과정이 있었으면 좋았을텐데, 템플릿을 라이브러리 없이 순수 CSS까지 구현을 마친 후 하나씩 전달받는 방식이어서 과제 제출 전까지도 테스트하느라 바빴다.

결과물은.... 엉망이 되었다; 그래도 기분이 나쁘거나 실망스럽지 않았다. 오히려 배운게 너무 많아 만족한 한 주였다. 이런 과정들을 직접 몸으로 느껴보라고 일부러 이런 커리큘럼을 짜 놓은건 아닐까?

profile
The best time to plant a tree was twenty years ago. The second best time is now.

0개의 댓글