• 카테고리

    질문 & 답변
  • 세부 분야

    풀스택

  • 해결 여부

    미해결

reverser('accountapp:hello_world2')에서 reverse함수

21.08.15 03:57 작성 조회수 120

0

제가 알기로 reverse함수는 list타입에서 제공하는 함수라고

알고 있는데... 왜 HttpResponseRedirect(reverse(''))

에서 reverse함수를 써야 앱내부의 ''안에 접속할 수 있는건가요...?

답변 1

답변을 작성해보세요.

1

안녕하세요.
질문 확인했습니다.

질문자님이 알고 계시는 reverse 와 django 에서 제공하는 reverse 는 다른 기능입니다.

위와 같은 상황에서 사용되는 reverse 는,
말 그대로 list 안에 있는 값들을 역순으로 배치하는 기능을 가지고 있습니다.

하지만 저희가 강좌에서 사용하는 reverse 는 
django 에서 제공하는 별도의 기능으로,

django.urls 모듈 내에서 reverse 를 임포트 해오는 것을 볼 수 있습니다.

def reverse(viewname, urlconf=None, args=None, kwargs=None, current_app=None):
if urlconf is None:
urlconf = get_urlconf()
resolver = get_resolver(urlconf)
args = args or []
kwargs = kwargs or {}

prefix = get_script_prefix()

if not isinstance(viewname, str):
view = viewname
else:
*path, view = viewname.split(':')

실제로 내부 함수를 들여다보게 되면,
내용이 질문자님이 생각하신 reverse 의 기능과는 상이하다는 것을 알 수 있죠.

결과적으로,
저희가 사용하는 reverse 의 기능은 리스트 내용을 역순으로 재배치하는 기능이 아니라,
어떤 앱 에서, 어떤 라우트로 향하게 하는 주소를 역변환 하여 되돌려주는 기능을 가지고 있기 때문에,
HttpResponseRedirect 기능이 정상적으로 작동되는 것입니다.

답변이 도움 되셨으면 좋겠네요.
좋은하루 보내시구요!

감사합니다-

현비밀님의 프로필

현비밀

질문자

2021.08.15

감사합니다... 별것 아닌 질문에도 ..ㅠㅠ

연휴 잘보내세요!