def profile(request, username):
member = get_object_or_404(get_user_model(), username=username)
context = {
"member":member,
}
return render(request, 'users/profile.html', context)
이렇게 users/views.py
에서 프로필 함수를 정의하고, 공통이 되는 base.html
에서
.
.
.
<a href="{% url 'users:profile' member.username %}">유저 정보</a>
이런식으로 설정한 member
변수를 사용하니 NoReverseMatch
오류가 발생했다.
이는 대부분의 views
에서 member
변수를 context로 전달하지 않기 때문에 templates에서 참를 할 수 없어서 나온 오류다!
member
는 profile
뷰에서 정의되었기 때문에 다른 뷰에서는 이를 전달하지 않는다. 내가 url을 설정한 base.html
은 전체를 아우르는 템플릿이므로 해당 변수가 없어서 공통되는 변수를 사용해야함.
<a href="{% url 'users:profile' request.user.username %}">내 프로필</a>
이런식으로 자신의 프로필을 볼 수 있는 url을 설정해서 수정함.
여러 템플릿에서 내가 특정 뷰에서 설정한 member
변수를 사용하려면 컨텍스트 프로세서? 를 사용하면 되는데 여기서는 필요 없으니 간단하게 request.user
를 변수로 사용하여 해결.