개발일지?/내배캠

캠프 6주 4일차 TIL

규파팡 2023. 4. 20. 22:10

오늘

3주 차 심화를 다 들었다. 오늘은 강의내용 말고 혼자 중간에 궁금해서 찾아본 걸작성할 예정이다.

render()와 redirect()의 차이!

공식문서를 참고했다. 영어는 공부 중이기에 번역기를 사용한다.

render()

render(request, template_name, context=None, content_type=None, status=None, using=None)

request, template_name  2가지는 필수 입력사항이다. 예를 들어서 저번프로젝트 때 사용했던걸 보자.

def detail_tweet(request, id):  # 게시글 상세페이지 렌더 함수
    my_tweet = TweetModel.objects.get(id=id)
    tweet_comment = TweetComment.objects.filter(tweet_id=id).order_by('-created_at')
    return render(request, 'tweet/tweet_detail.html', {'tweet': my_tweet, 'comment': tweet_comment})

template_name은 실행 시 보여줄 html경로를 작성해 주었다. 이때context로 원하는 인자를, 즉 view에서 사용하던 파이썬 변수를 html 템플릿으로 넘길 수 있다. 딕셔너리형태로 넘어가기 때문에 key값이 탬플릿 변수, value값파이썬변수이다.

 

redirect()

redirect(to, permanent=False, *args, **kwargs)

redirect는 다음과 같은 파라미터를 가진다. to 에는 어느 URL로 이동할지를 정해준다. 이때 상대경로, 절대경로 모두 가능하다. 상대경로절대경로는 추가로 작성해야겠다. urls.py  name을 정의하고 이를 많이 사용합니다. 단지 URL로 이동하는 것이기 때문에 render 같이 context 데이터를 작성하거나 데이터를 넘겨주진 못한다.

# views.py

from django.shortcuts import redirect

def my_view(request):
    ...
    # return redirect("some-view-name")            # view_name 사용
    # return redirect("/some/url/")              # 상대 경로 
    # return redirect("https://example.com/")    # 절대 경로

주석은 임의로 작성해 둔 것. 실제사용 시엔 필요한 경로로 사용하면 됨.

 

차이를 작성하려고 했는데 쓰다 보니 각각의 정의와 사용법이 됐다.

둘의 차이는 거의 없어 보이면서 유사해 보이지만 render()와 redirect()는 django를 처음 할 땐 어려웠지만 지금은 음? 이럴 땐 이렇게 쓰더라~ 싶은 게 있다. redirect()는 url로이동하고 그러면 맞는 views 함수가 실행되고 다시 render()와 redirect()를 선택할 것이다. 음... 이상하네 나도 이해 안 되게 썼네 ㅎㅎㅎ 정리는 다음에 다시 머리가 맑아지면 해야겠다. 

 

오늘의 규파팡이 느낀 점!

누군가에게 정보를 주기 위함이 아니고 내 머리를 정리하는 것이기에 시간은 항상 있다. 이게 취업 전이라는 한계가 있긴 하지만.

TIL 대표이미지

 

'개발일지? > 내배캠' 카테고리의 다른 글

WIL 6주차 - 내배캠  (0) 2023.04.23
캠프 6주 5일차 TIL  (0) 2023.04.21
캠프 6주 3일차 TIL  (0) 2023.04.19
캠프 6주 2일차 TIL  (0) 2023.04.18
캠프 6주 1일차 TIL  (2) 2023.04.17