django 유저 프로필 변수 오류

2star_·2024년 12월 19일
0

django

목록 보기
8/18
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에서 참를 할 수 없어서 나온 오류다!

memberprofile뷰에서 정의되었기 때문에 다른 뷰에서는 이를 전달하지 않는다. 내가 url을 설정한 base.html은 전체를 아우르는 템플릿이므로 해당 변수가 없어서 공통되는 변수를 사용해야함.

<a href="{% url 'users:profile' request.user.username %}">내 프로필</a>

이런식으로 자신의 프로필을 볼 수 있는 url을 설정해서 수정함.
여러 템플릿에서 내가 특정 뷰에서 설정한 member 변수를 사용하려면 컨텍스트 프로세서? 를 사용하면 되는데 여기서는 필요 없으니 간단하게 request.user를 변수로 사용하여 해결.

profile
안녕하세요.

0개의 댓글

관련 채용 정보