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()
# 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)
2. 사용자 프로필 템플릿 : user.html
{% extends "base.html" %}
# vim app/templates/user.html
{% block content %}
<h1>User: {{ user.username }}</h1>
<hr>
{% for post in posts %}
<p>
{{ post.author.username }} says: <b>{{ post.body }}</b>
</p>
{% endfor %}
{% endblock %}
3. 사용자 프로필 템플릿 : base.html
Profile 버튼 및 링크 추가
<!-- vim app/templates/base.html -->
<!-- ... -->
<div>
Microblog:
<a href="{{ url_for('index') }}">Home</a>
{% if current_user.is_anonymous %}
<a href="{{ url_for('login') }}">Login</a>
{% else %}
<a href="{{ url_for('user', username=current_user.username) }}">Profile</a>
<a href="{{ url_for('logout') }}">Logout</a>
{% endif %}
</div>
<!-- ... -->