본문 바로가기
  • 살짝 구운 김 유나
Web/Django

render vs redirect

by yunae 2022. 9. 5.

Django에서 페이지를 이동할 때 주로 1. render 2. redirect를 사용

 

 

render()

: 템플릿 불러오기!!! = html을 화면에 출력해야 하는 경우

# request, template_name은 필수로 입력해야 하는 인자!
render(request, template_name, context=None, content_type=None, status=None, using=None)

render는 httpResponse 객체를 반환하는 함수

-> template과 context(원하는 인자)을 엮어 httpResponse로 쉽게 반환하게 해주는 함수

 

사용예시)

- context 속성을 통해서 템플릿에 정보를 전달 할 수 있음

def login(request):
    return render(request, 'login.html')


def movie(request):
    
    context={
    	'movie': movie
    }
    
    return render(request, 'movie.html', context)

 

 

 

redirect()

: URL로 이동!!! = URL에 맞는 views 가 실행

-> 뷰의 수행을 마친 후에 바로 템플릿을 호출하는 것이 아니라 다른 뷰를 실행시킴

-> 현재 뷰와 다음 뷰가 서로 독립적일 때 사용

'''
to : 어디로 이동할지, 상대/절대 url 모두 가능
'''
redirect(to, permanent=False, *args, **kwargs)

render와 같이 context를 넘겨주지는 못함

 

사용 예시)

# 사용자가 입력한 데이터를 전송받아 DB에 저장하는 함수
def create(request):
    # 사용자의 데이터를 받아서
    title = request.POST.get('title')
    audience = request.POST.get('audience')
    release_date = request.POST.get('release_date')
    genre = request.POST.get('genre')
    score = request.POST.get('score')
    poster_url = request.POST.get('poster_url')
    description = request.POST.get('description')
    
    # DB에 저장
    movie = Movie(title=title, audience=audience, release_date=release_date,genre=genre,score=score,poster_url=poster_url,description=description)
    movie.save()

    return redirect('movies:index')

def delete(request, pk):
    movie = Movie.objects.get(pk=pk)
    movie.delete()

    return redirect('movies:index')

생성하고 삭제하는 view는 html을 불러올 필요 없이,,,그냥 URL 이동만..? 해서 그런듯,,, 쩝,, 

 

 

 

 

좋음 가운데서 불편함을 찾는 버릇을 고치자.

나에게 일어난 좋은 일들을 그 모양 그대로 받아들이고 만족할 줄 아는 긍정왕되기,,

지금부터 시작!

'Web > Django' 카테고리의 다른 글

쿠키와 세션  (0) 2022.09.08
Django Form  (0) 2022.09.07
Django Model 2 - QuerySet API  (0) 2022.09.02
Form Data 보내고 가져오기  (0) 2022.09.02
Templates Inheritance  (0) 2022.09.01

댓글