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
'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 |