작성
·
247
답변 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 %} 로 감싸보실 수 있으시겠습니다.
그리고, 질문 제목에는 본 질문을 요약해서 써주시면, 다른 분들에게도 본 질문이 도움이 될 수 있습니다. 부탁드리겠습니다.
화이팅입니다. :-)
아.. 감사합니다! 제목에는 제가 요약해서 올리도록 하겠습니다.. !