Django | 2022. 6. 28. 14:47

쿼리스트링 일부 수정해 보기

장고에서 쿼리 스트링으로 전달되는 문자열을 수정해서 다시 보내려고 시도하려고 한다. 이런 쿼리스트링이 저장된다는 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 이어서 수정,삭제가 안된다는 

https://stackoverflow.com/questions/29492894/how-to-remove-key-from-request-querydict-in-django#:~:text=You%20can%20not%20change%20these,then%20pop%20item%20from%20it.&text=The%20QueryDicts%20at%20request.

 

How to remove key from request QueryDict in Django?

Here is one of my Django views: def index(request): message = request.GET.get('message', '') context = RequestContext(request, { 'message': message }) return render(requ...

stackoverflow.com

스트링에 매달린 이쁜 놈들

Pexels에서 THIS IS ZUN님의 사진: https://www.pexels.com/ko-kr/photo/bokeh-1194025/

댓글을 달아 주세요

TistoryWhaleSkin3.4">