Django
render? redirect? / 효율적 url 관리 / http상에서 정보 주고 받는 방식
Like A Flowing Cloud
2021. 6. 14. 15:34
■ render? redirect?
- render = 템플릿을 불러온다.
- redirect = URL 로 이동한다.
( URL로 이동한다는 건 그 URL 에 맞는 views가 다시 실행될테고
여기서 render를 할지 다시 redirect 할지 결정할 것. )
● render
render() 함수는 request 객체를 첫번째 인수로 받고,
템플릿 이름을 두번째 인수로 받으며,
context 사전형 객체를 세번째 선택적 인수로 받는다.
render(request, template_name, context=None, content_type=None, status=None, using=None)
이 중 request, template_name 은 필수적으로 필요하다.
# views.py
from django.shortcuts import render
def my_view(request):
name = "minsung"
return render(request, 'myapp/index.html', {
'name': name,
}
● redirect
redirect는 URL로 이동한다.
redirect(to, permanent=False, *args, **kwargs)
to 에는 어느 URL 로 이동할지를 정하게 된다.
이 때 상대 URL, 절대 URL 모두 가능하며 urls.py 에 name 을 정의하고 이를 많이 사용한다.
단지 URL로 이동하는 것이기 때문에 render 처럼 context 값을 넘기지는 못한다.
# views.py
from django.shortcuts import redirect
def my_view(request):
...
return redirect('view-name') # view_name 사용
# return redirect('/some/url/') # 상대 경로
# return redirect('https://example.com/')# 절대 경로
■ url을 효율적으로 관리
# blog/urls.py
from . import views
urlpatterns = [
path('new/', views.new, name='new'),
]
# project/urls.py
from django.urls import path, include
urlpatterns = [
path('blog/', include('blog.urls')),
]
■ http 상에서 정보를 주고 받는 방식
method를 따로 지정하지 않고 form으로 넘겨주면 GET 방식으로 넘어온다.
url로 정보가 드러나지 않는 방식 = POST 방식
- 데이터 조회 : GET
- 데이터 생성 : POST
- 데이터 수정 : PUT
- 데이터 삭제 : DELETE