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 |
댓글