🤍 전 강의 25% 할인 중 🤍

2024년 상반기를 돌아보고 하반기에도 함께 성장해요!
인프런이 준비한 25% 할인 받으러 가기 >>

  • 카테고리

    질문 & 답변
  • 세부 분야

    풀스택

  • 해결 여부

    미해결

강사님 안녕하세요!

22.02.24 11:53 작성 조회수 193

1

제가 강의 내용을 따라가던도중
 
pydenticon 을 수행하였으나,
 
이런 오류가 납니다...
 
현재 오류는 로그아웃 한 상태이구요..
 
로그인을 하면 되긴합니다만...
 
왜 이렇게 오류가 나는지 모르겠습니다...
 

답변 1

답변을 작성해보세요.

1

안녕하세요.

url reverse 시에 사용된 인자는 user.username 이구요.

user 는 settings내의 디폴트 context processors를 통해 지정되었으며, 현재 유저를 나타냅니다. 로그인 상황에서는 User 모델의 인스턴스이구요. 로그아웃 상황에서는 AnonymousUser 클래스의 인스턴스가 됩니다.

AnonymousUser 클래스는 User 모델과 동일한 속성과 함수들을 가지도록 되어있습니다. 아래 링크를 통해 AnonymousUser 클래스를 보시면 username 필드의 값이 빈 문자열로 되어있습니다.

https://github.com/django/django/blob/3.0.14/django/contrib/auth/models.py#L398

askcompany/urls.py 내에서 pydenticon_image 에 대한 path 정의는 다음과 같습니다.

path('identicon/image/<path:data>/', pydenticon_image, name="pydenticon_image"),

위에서 지정된 path 이름의 converter는 정규표현식으로는 ".+" 입니다. 1회 이상 반복을 지정하고 있습니다.

https://github.com/django/django/blob/3.0.14/django/urls/converters.py#L40

그런데, 로그아웃 상황에서의 user.username은 빈 문자열이므로, url reverse 시에 매칭되는 path를 못 찾아서 발생하는 오류입니다.

현재의 url reverse 코드는 로그인 상황에서만 동작하도록 {% if user.is_authenticated %}{% endif %} 로 감싸보실 수 있으시겠습니다.

그리고, 질문 제목에는 본 질문을 요약해서 써주시면, 다른 분들에게도 본 질문이 도움이 될 수 있습니다. 부탁드리겠습니다.

화이팅입니다. :-)

97bennie님의 프로필

97bennie

질문자

2022.02.25

아.. 감사합니다!  제목에는 제가 요약해서 올리도록 하겠습니다.. !

채널톡 아이콘