파파비의 블로그

[python / 파이썬] Django HttpResponseRedirect (Redirecting) 본문

개발/django

[python / 파이썬] Django HttpResponseRedirect (Redirecting)

N. Dave 2021. 6. 5. 10:48
반응형

url 입력이 숫자로 들어왔을 경우 (예 1,2,3,4,5...12)

우리는 january...december까지 설정해두었을 때,

1 > january 로 바꾸게 리다이렉팅을 할 수 있다.

 

 

처음에는 view 내에서, 또 다른 view를 불러서 처리하면 되지 않는가 생각했지만

url이 다르게 표시되기 때문에, 리다이렉팅이 더 좋겠다고 생각하게 되었다.

리다이렉팅하면 url도 바뀌기 때문

 

리다이렉팅은 httpresponseredirect 메소드를 활용하고 그 안에 url을 넣어주면 된다.

참고로 dic.keys()는 list 화 해주어야한다. 아니면 type이 dict_keys 여서 list처럼 작동하진 않는다.

 

 

 

그런데, 여기 위에 보면 url이 하드코딩되어 있다.

하드코딩이 되어 있으면 하나의 수정에도 많은 에러들이 생길 수 있는데, 특히 url 부분은

reverse 함수 & name 특성을 활용하여 dynamic하게 활용하는게 좋다.

 

 

1) url 내 name 특성

여기보면 path에 name 특성을 부여했다. 이렇게 되면 url을 입력할 때, challenges/ 라고 하드코딩할 필요 없고,

name의 특성을 가져와서 연결시켜주면 된다.

'challenges/' 부분은 나중에 바뀔 수도 있기 때문에, 하드코딩하면 큰 불편을 야기할 수 있다.

 

우리는 어쨋든 아래쪽 path로 redirecting해야하기 때문에, 해당 path를 가르키면 된다.

이름을 'string_version_path'라고 지정했다.

 

2) view 부분 수정하기 (url)

reverse 함수를 활용하면 path를 dynamic하게 자동으로 만들어준다.

하드코딩할때의 에러 리스크가 사라진다.

먼저 path 이름을 가져와서 첫번째에 넣어주고, <str:month>에 해당하는 부분을 args=[] 안에 넣어준다.

특히 저기에는 다양한 종류의 여러개가 올 수 있기 때문에 args 역시 list로 표현되어 있다.

 

3) 확인하기

전체 url config를 다루는 프로젝트 단위의 url.py에 들어왔다.

여기에 'challenges/' 부분을 'chal'로 수정하게 되면, 

 

하드코드로 숫자 url redirecting했을 때는

url이 'chal/1' 이렇게 되면 > challenges/1 로 리다이렉팅 되어 에러가 생기지만,

 

name+ reverse함수를 활용할 경우 알아서 바뀌어서

chal/january로 연결된다.

 

반응형
Comments