본문 바로가기
개발/Django_python 웹 프레임워크

[Django] render함수 vs redirect 함수

by 자유로운 코끼리 2020. 7. 12.
728x90

render

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

render는 django.shortcuts 패키지에 있는 함수로서 다음과 같은 파라미터를 가집니다.

이때 request와 template_name은 반드시 적어주어야 합니다.

다음 예시와 함께 보면 이해가 잘 되실 거에요.

def main(request):
  msg = 'hi'
  return render(request, 'main.html', {'message': msg})

첫번째 파라미터로 request를,

두번째 파라미터로 템플릿(main.html)을 받아들입니다.

여기서 템플릿은 main.html으로 지정되어 있는데,

이는 templates폴더 안에 있는 main.html을 가리키게 됩니다.

세번째 context는 템플릿인 main.html에 전달할 데이터를 Dictionary로 전달하게 됩니다.

Dictionary의 key는 main.html에서 사용할 템플릿변수명이 되고,

value는 전달하는 내용을 넣어주면 됩니다.

 

이제 main.html에서

{{message}}

를 입력하면 hi라는 글을 우리는 확인할 수 있겠죠.

 

redirect

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

이는 첫번째 파라미터인 to는 url을 받아, url로 이동합니다.

이 때 상대 URL, 절대 URL이 모두 가능한데,

상대url은 현재 실행되는 문서의 위치를 기준으로 한 디렉토리의 경로를 의미하며,

절대 URL은  'https://www.google.com/' 구글 url과 같이 문서의 위치를 가르키는 도메인을 포함한 전체 위치정보를 의미합니다.

 

 

render함수 vs redirect 함수

이 두 함수의 차이점은 render의 경우 내가 가짐 templates를 data를 넣어 보내고 싶을 때 이용하고,

redirect는 내가 가진 templates뿐만 아니라 절대 url로 이동하고 싶을 때에도 이용할 수 있다는 거죠.

이때 url로 이동한다는 말은, 그 url과 연결된 views가 다시 실행되고 또 이에 따른 return값이 존재하게 되는거지요.

 

댓글