python/Django

[Django] redirect 로 parameter 값을 넘기고 싶을때

http://portfolio.wonpaper.net 2023. 11. 13. 09:40

Django 상에서 다음 페이지로 이동시에는

보통의 경우 render 함수나 redirect 함수를 보통쓴다.

 

[ render 함수 ]

context = {}

context['search'] = search
context['keyword'] = keyword
context['page'] = page
        
return render(request, 'adm/notice_detail.html', context)

 

위의 간단한 예시처럼  context 라는 딕셔너리를 하나 선언하고 이안에 담아서 보낼수 있다.

그러나, 문제는 다음페이지로 이동은 하는데, 주소창도 그래도 바뀌지 않으며, notice_detail 다음페이지로 refresh 가 되지 않아서

썰렁한 빈화면 페이지를 접하게 된다.

이를 위해서 redirect 함수로 직접적으로 페이지 이동과 함께 refresh 되며 주소창에도 다음페이지 주소가 잘 나오도록 할 수가 있다.

 

문제는 redirect 함수 특성상 get 방식등으로 parameter 를 넘길 수 가 없다는 것이다. 

이에 잠깐 트릭이 필요한데, 구글링 삽질로 드디어 찾아내었다.

 

[ redirect 함수 ]

 

return redirect('/adm/notice_detail.html', context). # 문법오류 -> 이렇게 쓸수가 없다.

 

 

from django.urls import reverse
from urllib.parse import urlencode

query_string = urlencode({'search': search, 'keyword': keyword, 'page':page, 'no': str(no)})
url = '{}?{}'.format('/adm/notice_detail/', query_string)
return redirect(url)

 

 

참고 : https://realpython.com/django-redirects/