오늘
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()를 선택할 것이다. 음... 이상하네 나도 이해 안 되게 썼네 ㅎㅎㅎ 정리는 다음에 다시 머리가 맑아지면 해야겠다.
오늘의 규파팡이 느낀 점!
누군가에게 정보를 주기 위함이 아니고 내 머리를 정리하는 것이기에 시간은 항상 있다. 이게 취업 전이라는 한계가 있긴 하지만.
'개발일지? > 내배캠' 카테고리의 다른 글
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 |