장고에서 쿼리 스트링으로 전달되는 문자열을 수정해서 다시 보내려고 시도하려고 한다. 이런 쿼리스트링이 저장된다는 QueryDict 라는 놈은 변경이 되지 않네.
이걸 다른 객체로 복사하고, 수정/삭제/추가 등의 변경을 한다음
QueryDict.copy()
Python 표준 라이브러리의 copy.deepcopy()를 사용하여 객체의 복제를 생성하여 리턴한다. 복제는 변경가능하므로 값을 변경할 수 있다.
출처: https://engineer-mole.tistory.com/121 [매일 꾸준히, 더 깊이:티스토리]
문자열로 변환해서 사용하면 된다. 다시 쿼리 문자열에 대입할 수 없고 걍 문자열 변수로 넘겨주고 템플릿에서 적당히 받아서 다시 처리하자.
내가 사용한 코드는 그냥 참고로 아래에 둔다. s_page 를 빼고 쿼리스트링을 만들고 싶었다.
# 페이지 기능 추가를 위해 querydict 에서 s_page는 뺀 문자열이 필요하다. 아니면 계속 s_page=xx 가 추가되어 중복된다.
passing_querydict = request.GET.copy()
if passing_querydict.get("s_page"):
passing_querydict.pop("s_page")
passing_querydict = passing_querydict.urlencode(safe=None)
참고사이트 - GET and POST parameters are immutable 이어서 수정,삭제가 안된다는
Pexels에서 THIS IS ZUN님의 사진: https://www.pexels.com/ko-kr/photo/bokeh-1194025/