inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트

Django Form

return redirect(post) 에서 왜 post_detail로 넘어가는지 이해가안됩니다.

해결된 질문

343

BH J

작성한 질문수 36

0

안녕하세요!

return redirect(post) 에서 왜 post_detail로 넘어가는지 이해가안됩니다.

post = form.save()에서

form data들이 DB에 저장이 되고

그것을 받아서 redirect를 하면 왜

post_detail로 화면이 넘어가나요?

그냥 form.save()가 데이터를 저장하면서 return값이 그 DB에대한 url값이라고 보면될까요?

react python django docker

답변 1

1

이진석

안녕하세요.

redirect 함수는 내부 구현에서 resolve_url을 활용해서 이동할 주소를 얻습니다.

관련코드 : https://github.com/django/django/blob/3.2.15/django/shortcuts.py#L41

그리고 resolve_url 에서는 인자로 받는 객체에서 get_absolute_url 메서드를 지원하면 이 함수를 호출하여 url 문자열을 획득하고, 그 즉시 리턴하게 됩니다. get_absolute_url 메서드를 지원하지 않으면 URL Reverse를 진행하게 됩니다.

관련코드 : https://github.com/django/django/blob/653a7bd7b7c2f7c3ffe6b22be53da1472c491474/django/shortcuts.py#L102

그러니

  1. redirect("blog:post_list") 와 같이 호출이 된다면 "blog:post_list" 문자열에서는 당연히 get_absolute_url 메서드가 없으니 그대로 URL Reverse를 진행하게 되는 것이구요.

  2. redirect(post) 호출 시에 Post 모델에서 get_absolute_url 을 구현하지 않았다면, post는 문자열도 아니기에 오류가 발생하게 됩니다.

  3. 마지막으로 redirect(post) 호출 시에 Post 모델에서 get_absolute_url이 구현되어있다면, 이 메서드를 호출해서 반환된 URL 문자열 주소로 이동을 하게 됩니다.

충분한 답변이 되었을까요?

궁금증이 해결되셨다면 본 질문의 상태를 해결됨으로 변경 부탁드립니다.

화이팅입니다. :-)

0

BH J

와 다음 강의 듣고 있었는데

바로 답변 달아주시다니 정말감사합니다

100% 이해 완료했습니다

안녕하세요.

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

364

1

admin form에서 앞선 필드 선택 후 다른 필드 select widget 구성하는 방법

0

573

3

useState는 필수일까요?

0

262

1

python manage.py makemigrations instagram 시 created_at default 오류가 발생합니다.

0

599

4

Django allauth를 사용한 소셜 로그인 시 에러

0

654

1

프로젝트명 변경 뒤, 디버그툴바+디버그모드 사용 시 에러

0

554

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

250

1

No post matches the given query

0

661

2