Like A Flowing Cloud

render? redirect? / 효율적 url 관리 / http상에서 정보 주고 받는 방식 본문

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