NoReverseMatch at /accounts/signup/
769
작성한 질문수 21
안녕하세요 선생님 ㅠㅠ
연달아서 에러가 빵빵 터지네요
NoReverseMatch at /accounts/signup/
Reverse for 'pydenticon_image' with keyword arguments '{'data': ''}' not found. 1 pattern(s) tried: ['identicon/image/(?P<data>.+)/\\Z']인데요.
문제가 되는 부분은
<img src="{% url 'pydenticon_image' data=user.username %}" style="width: 24px; height: 24px;">이 부분으로 나옵니다.
Error during template rendering
In template /Users/daniel_choi/Desktop/total_projects/instagram_second/templates/layout.html, error at line 77
Reverse for 'pydenticon_image' with keyword arguments '{'data': ''}' not found. 1 pattern(s) tried: ['identicon/image/(?P<data>.+)/\\Z']이게 에러 추가 메세지 이구요.
하지만 이것과 관련하여는 잘 작동하다가 그냥 아무것도 만진것없이 echo 쪽만 들락거리고 signup 시도했던 것 밖에 없는데, 되다가 갑자기 에러가 나니깐 당황스럽네요;
(물론 admin을 제외한 계정을 계속해서 삭제하고 시도하긴 했습니다.)
from django_pydenticon.views import image as pydenticon_image
urlpatterns = [
path('identicon/image/<path:data>/', pydenticon_image, name = 'pydenticon_image')
]이렇게 되어있구요.
accounts/forms.py
에서도 User모델 상속 받고, class Meta로
fields 중에서 username을 분명히 오버라이드 시킨것도 확인이 되는데, 왜 이런 에러가 발생하는지 모르겠습니다! ㅠㅠ
이거는 추가적으로 몇번 테스트를해보니깐
1.계정을 생성한다
2.SMTP에러가 뜬다.
3.admin페이지에 들어가서 방금 생성된 계정을 삭제한다.
4.다시 /accounts/signup페이지에 접속시도한다.
5.<img src="{% url 'pydenticon_image' data=user.username %}" style="width: 24px; height: 24px;">
관련된 reversematch에러가 뜬다.
6.admin페이지에서 admin계정으로 로그인을 하고 accounts/signup 페이지로 와야 비로소 이 reversematch 에러가 뜨지 않습니다.
#번외
번외 적으로는 분명 계정을 생성했고, admin 페이지에서도 2개의 추가계정이 확인되는데, Django administration
(어드민페이지 로그인창)을 통해서 로그인하려고 하면 비밀번호를 맞게 입력해도 로그인이 안됩니다;

답변 2
1
안녕하세요.
아래의 오류에서 정확히 오류 내용을 알려주고 있습니다.
Reverse for 'pydenticon_image' with keyword arguments '{'data': ''}' not found. 1 pattern(s) tried: ['identicon/image/(?P<data>.+)/\\Z']
URL Reverse 오류인 것이죠.
identicon/image/데이터/ 주소 패턴에서는 .+ 로서 마침표(.) 패턴의 문자열이 + (1회 이상) 반복되기를 희망하고 있습니다. 이 패턴에 맞는 data가 지정되어야 URL Reverse에 성공을 하는 거죠.
그런데, 지정된 data 인자는 {'data': ''} 에서도 확인하실 수 있듯이, 빈 문자열입니다. 그래서 URL Reverse에 실패했다는 오류입니다.
아래 코드의 user.username 값이 빈 문자열로서 URL Reverse 시에 참조되었다는 거죠.
{% url 'pydenticon_image' data=user.username %}
이 경우는 2가지 경우입니다.
user.username의 값이 정말 빈 문자열인 경우
혹은 현재 템플릿 render 시에 지정된 context data에 user 인자가 없을 경우 : 장고 템플릿 엔진에서는 참조하고자 하는 context data가 없을 경우, 별도 오류를 발생시키지 않고, 디폴트로 빈 문자열로 참조합니다.
이 경우는 첫번째 경우입니다. 장고에서 로그인하지 않은 상황에서 request.user 는 AnonymousUser 클래스의 인스턴스이며, 로그인된 상황에서는 User 모델의 인스턴스입니다.
AnonymousUser 클래스에서는 username 필드는 빈 문자열입니다.
https://github.com/django/django/blob/4.1.5/django/contrib/auth/models.py#L420
그러니, 관리자로 로그인하셨을 때에는 위 오류가 발생하지 않으셨던 것 입니다.
해당 코드는 user.username 값을 필히 채워넣어주셔야 하구요. 로그인 상황일 때에만 호출되도록 하는 것도 한 가지 방법입니다.
{% if user.is_authenticated %}
{% url 'pydenticon_image' data=user.username %}
{% endif %}
URL Reverse 오류는 개발하시면서 많이 만나시는 오류 중 하나입니다.
이번 기회로 URL Reverse 오류를 인지하고 해결하는 방법을 차근차근 정리해보세요.
화이팅입니다. :-)
0
앗 선생님 지금 에러처리를 하다보니깐 생각난건데요.
Django administration
관련해서
이미 생성된 계정을 admin외의 계정으로 Django administration
에서 로그인하려고 하면 비밀번호가 분명히 맞음에도 #번외와 같은 메세지가 뜹니다. 왜 그런걸까요?(혹시몰라서 계정을 삭제하고 시도하고, 삭제하고 시도하기를 SMTP 과정 반복하면서 10번가까지 시도했던것 같습니다!)
0
admin 페이지에서는 staff 권한이 있는 유저만 로그인할 수 있습니다.
staff 권한이 없는 유저는 비밀번호가 맞더라도 admin 페이지에는 로그인할 수 없습니다.
/admin/ 에 접근 시의 로그인 처리 모듈을 admin 앱의 로그인 모듈이기 때문이기에 그렇게 처리되고 있습니다.
안녕하세요.
0
48
1
[OneToOne Field Demo] get_user_model() 메서드를 활용해야 하는 이유?
0
273
1
useEffect 훅에서 else 유무에 따른 결과
0
211
1
useAxios 훅의 dependency array 설정
0
245
1
useEffect에서 변수 업데이트 관련 질문
0
381
1
rest_framework.generics.CreateAPIView의 model 속성 유무
0
267
1
bootstrap4
0
470
4
리뉴얼 강의가 오픈이 되면 기존 강의는 더이상 못보는걸까요
1
363
1
admin form에서 앞선 필드 선택 후 다른 필드 select widget 구성하는 방법
0
572
3
useState는 필수일까요?
0
262
1
python manage.py makemigrations instagram 시 created_at default 오류가 발생합니다.
0
597
4
Django allauth를 사용한 소셜 로그인 시 에러
0
654
1
프로젝트명 변경 뒤, 디버그툴바+디버그모드 사용 시 에러
0
552
2
useLocalStorage() 함수 사용여부
0
228
1
django에 LOGIN_URL = '/accounts/login/'의 의미?
0
448
1
리듀서의 의미 재확인
0
430
1
simple-jwt Refresh Token 사용 노하우
0
897
2
docker compose 를 통한 배포 관련 오류 문의
0
670
1
파이썬 속도 장고 관련 궁금한게 있습니다.
0
364
1
is_like_user
0
233
1
related_name 오류
0
273
1
re_path 오류
0
258
1
re_path url
0
249
1
No post matches the given query
0
660
2





