상세 컨텐츠

본문 제목

[django] Redirect, Render, Reverse의 차이점

DEVELOPMENT/django

by 김도훈 2020. 8. 9. 15:15

본문

반응형

Redirect

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

redirect 는 다음과 같은 파라미터를 가진다. to 에는 어느 URL 로 이동할지를 정하게 된다. 이 때 상대 URL, 절대 URL 모두 가능하며 urls.py  name 을 정의하고 사용한다. 단지 URL로 이동하는 것이기 때문에 render 처럼 context 값을 넘기지는 못한다.

 

Render

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

render 는 다음과 같은 파라미터들을 가진다. 이 중에서 request  template_name 은 필수적으로 필요하다. request 는 위와 동일하게 써주게 되고, template_name 은 불러오고 싶은 템플릿을 작성해준다. 즉, 화면에 html 파일을 띄운다고 생각하면 된다. 이 때 context 로 원하는 인자를, 즉 view 에서 사용하던 파이썬 변수를 html 템플릿으로 넘길 수 있다. context 는 딕셔너리형으로 사용하며 key 값이 탬플릿에서 사용할 변수이름, value 값이 파이썬 변수가 된다.

 

Reverse

python 코드 안에서 URL 템플릿 태그와 비슷하게 동작하는 기능이다.

from news import views
path('archive/', views.archive, name='news-archive')

urls.py에서 설정한 URL의 name이나, viewname을 통해서 다시 URL로 되돌릴 수 있다.

# name 사용 시
reverse('news-archive')

# viewname 사용 시
from news import views
reverse(views.archive)

인수가 있는 URL이라면 다음과 같이 args를 포함할 수 있다.

from django.urls import reverse

def myview(request):
    return HttpResponseRedirect(reverse('arch-summary', args=[1945]))

kwargs로 전달하는 것 또한 가능하다. 하지만 args와 kwargs를 동시에 전달할 수는 없다.

>>> reverse('admin:app_list', kwargs={'app_label': 'auth'})
'/admin/auth/'

일치하는 URL이 없으면 NoReverseMatch가 발생한다.

 

 

https://stackoverflow.com/questions/54964703/redirect-vs-reverse-django

 

redirect vs reverse django

I have experienced using reverse within get_absolute_url method in the model, but I wish I have an idea about the difference between reverse and redirect, I have tried to search on google about it ...

stackoverflow.com

 

반응형

'DEVELOPMENT > django' 카테고리의 다른 글

[django] 유저 다중모델  (0) 2020.10.16
[django] MySQL 연동하기  (0) 2020.10.16
[django] tailwindCSS 적용법  (0) 2020.09.30
[django] plotly 사용하기  (0) 2020.08.19
[django] 크롤링 알아보기  (0) 2017.07.05

관련글 더보기

댓글 영역