• 카테고리

    질문 & 답변
  • 세부 분야

    풀스택

  • 해결 여부

    미해결

Get_success_url 함수관련 여쭙니다.

21.06.05 00:34 작성 조회수 88

0

영상 7:15 쯤에, get_success_url함수 하는 부분에서, kwargs={'pk':self.object.pk}부분이 잘 이해가 안가는데요. 

저번 profileapp에서는 같은 맥락 부분이 kwargs={'pk':self.object.user.pk} 였는데 왜 articleapp에서는 user가 빠져야만 작동이 되는건가요? 제가 이 부분에서 현재 연동된 DB와 호출되는 object에 대한 부분을 잘 이해를 못하고 있는 부분에서 이 의문이 생긴 것 같은데, 부가 설명좀 부탁드립니다. 

그리고 form_valid(), get_success_url()와 같은 내부 함수를 읽고 싶은데, 이와 같은 함수가 정의된 문서는 어디서 찾을 수 있나요? 아니면 쟝고 도큐멘트라도 ㅠㅠ 

답변 1

답변을 작성해보세요.

1

안녕하세요!
질문 확인했습니다.
제가 최근에 멀리 이사를 오는 바람에 답변이 좀 늦어진점 죄송합니다 ㅠㅠ

아무튼 답변을 드리자면,
profile 앱의 경우에는 저희가 account detail 페이지를 꾸며주기 위한 보조 수단으로서 사용했습니다.


profile 의 모델 정의 내용을 보게 되면,
Account 와 Profile 은 1:1 로 연결되어 있습니다.
그렇다면 Profile 을 작성한 후의 success_url,
즉, 프로필 생성 성공 이후의 경로는 어디가 되는게 자연스러울까요?

물론 이 부분에서 정답은 없습니다.
하지만 저의 경우에는 계정 상세정보 페이지,
그러니까 AccountDetailView 로 리다이렉트 하는 것이 자연스럽다고 생각을 했습니다.

그렇기 때문에 ProfileCreateView 에서 success_url 을 작성할때는,
self.object 로 해당 profile 객체에 접근한 이후,
해당 Profile 객체에 연결되어있는 Account 의 객체에 접근하고,
해당 pk 값을 받아 AccountDetailView로 재연결되는 것입니다.

하지만 ArticleCreateView의 경우에는,
굳이 다른 연결된 객체에 접근할 필요가 없겠죠?
그러니까 바로 self.object로 완성된 게시글 객체에 접근, 바로 해당 pk를 불러와서,
pk를 통해 ArticleDetailView로 연결시켜주는 것입니다.


그리고 장고 문서의 경우에는
https://docs.djangoproject.com/en/3.2/ref/class-based-views/mixins-editing/#django.views.generic.edit.ModelFormMixin.get_success_url

위에 get_success_url 의 설명이 있는데,
대단한 설명은 나와있지 않네요.

소스코드의 경우에는 get_success_url 함수를 가지고 있는 mixin을 찾으셔서 보셔도 되고,
super().get_success_url 작성 한 이후에
해당 함수 위에서 Ctrl+B 를 누르면 해당 함수로 이동을 할 수도 있습니다.


답변이 도움이 되셨을까 모르겠네요.
혹여 그래도 이해가 잘 안되시거나,
부족한 점이 있다면 질문 계속 남겨주시길 바랍니다!

좋은하루 보내시길 바래요!
감사합니다-

cimagine님의 프로필

cimagine

질문자

2021.06.10

감사합니다, 명쾌한 설명 너무나 잘 이해했어요. 이사한 집에서 좋은 일상 보내시어요:)