1. 페이지 만들기
# vim app/routes.py
# ...
@app.route('/user/<username>') # 동적 구성 요소 <username>
@login_required
def user(username):
# query all로 username에 맞는 값 가져오기 시도하여 성공하면 결과 가지고, 실패하면 404 >에러 페이지 출력
user = User.query.filter_by(username=username).first_or_404()
# 사용자 프로필 보기 기능에 페이지 매김 기능 추가
page = request.args.get('page', 1, type=int)
posts = user.posts.order_by(Post.timestamp.desc()).paginate(
page, app.config['POSTS_PER_PAGE'], False)
# 다음 페이지
next_url = url_for('user', username=user.username, page=posts.next_num) \
if posts.has_next else None
# 이전 페이지
prev_url = url_for('user', username=user.username, page=posts.prev_num) \
if posts.has_prev else None
return render_template('user.html', user=user, posts=posts.items,
next_url=next_url, prev_url=prev_url)
# # posts에 출력될 데이터 넣기
# posts = [
# {'author': user, 'body': 'Test post #1'},
# {'author': user, 'body': 'Test post #2'}
# ]
# # 성공하면 user 변수를 user에 넣고 posts 변수를 posts에 넣어 user.html 열기
# return render_template('user.html', user=user, posts=posts)
# ...
app.config['POSTS_PER_PAGE'] 내용은 아래 config.py에서 설정해줄 예정입니다.
2. 사용자 프로필 템플릿에 페이지 매기기 링크 활성화
<!-- vim app/templates/user.html -->
<!-- ... -->
{% for post in posts %}
<!-- post 서브 템플릿 사용 -->
{% include '_post.html' %}
{% endfor %}
<!-- 사용자 프로필 템플릿의 페이지 매김 링크 -->
<!-- 이전 페이지와 다음 페이지 버튼 활성화 -->
{% if prev_url %}
<a href="{{ prev_url }}">Newer posts</a>
{% endif %}
{% if next_url %}
<a href="{{ next_url }}">Older posts</a>
{% endif %}
<!-- ... -->
3. POST PER PAGE 수치 설정
# vim config.py
class Config(object):
# ...
# 게시글 수 per 페이지 설정
POSTS_PER_PAGE = 25