항해 4일차
문제 - 공통된 페이지가 아닌 고유한 페이지 만들기
사실 오늘 멘탈이 아주 박살이 나 버려서 강의를 듣는 둥 마는 둥 했다. 그냥 처음부터 강의를 바짝 들었으면 굉장히 빨리 해결될 문제였는데, 시간을 너무 허비했다.
- HTML에 DB 조회 결과 전달
@app.route('/')
def home():
postings = list(db.postings.find({}))
for posting in postings:
posting["_id"] = str(posting["_id"])
return render_template('main.html', postings=postings)
- Jinja로 템플릿 표현, DB 조회 결과에 접근
<div class="list-grid" id="thriller-grid">
{% 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 %}
</div>
여기서 포인트는, a태그 href 속성. a태그 클릭을 하면 브라우저가 서버로 get 요청을 보낸다.
- 서버 측에서 url과 url 변수를 받아서 처리
@app.route('/detail/<postingId>')
def detail(postingId):
print(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)
except (jwt.ExpiredSignatureError, jwt.exceptions.DecodeError):
return redirect(url_for("login"))
<> 안의 값을 바로 변수로 받을 수 있다. 함수 정의할 때 인자로 다시 적어줄 것.
이 후 해당 url에 대해 detail.html 템플릿을 던져준다. Jinja로 템플릿을 표현해야 하니까 postingId로 조회한 결과도 같이 던져준다.
TIL
1. 업무 프로세스 조율의 중요성
- 각자 바라보는 방향이 다르고 생각하는 것이 다르다.
- 명확한 스코프, 개발 일정이 중요한 것 같다.
2. 밤샘 코딩은 자제할 것
- 컨디션 저조로 인해 잃는 것이 밤샘으로 얻는 것보다 많은 것 같다.
Author And Source
이 문제에 관하여(항해 4일차), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@goatyeonje/항해-4일차저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)