개발로 자기계발
article thumbnail
728x90

Redirect

리다이렉트란 다시 지시하는 것을 의미한다.

클라이언트에서 A라는 URL을 서버에게 요청했을 때 서버는 클라이언트에게 B로 다시 재요청하라는 것이다.

즉, A 요청 >> B 재요청 >> B 페이지 제공

 

1) 앞서 int로 생성했던 함수를 수정해 본다.

def monthly_challenge_by_number(request, month: int):
    monthly_case_key = list(monthly_case.keys())
    
    if month > len(monthly_case_key):
        return HttpResponseNotFound("Not month")

    response = monthly_case_key[month - 1]
    return HttpResponseRedirect(f"/challenges/{response}")

사전에 생성했던 dict를 key만 가져와서 list 형태로 만들어준다.

※ list형태로 해준 이유? list의 값은 index로 값을 뽑을 수 있기 때문에

ex) a = ["hi", "hello"]

a [0] = "hi"

1월의 값을 얻기 위해 1을 넣었을 때 list는 0부터 시작하기에 "-1"을 해준다.

그리고 Redirect가 이뤄진다.

만약 list의 index 범위에서 벗어난다면 "Not month"를 return 한다.

 

2) 터미널 창에서 HTTP 상태코드를 확인해 본다.

상태코드 300은 요청에 대해 하나 이상의 응답이 가능하다는 의미이다.
302에 대한 코드는 요청한 리소스의 URL이 일시적으로 변경되었다는 의미로 다른 URL을 제공했다는 의미로 볼 수 있다.

http://127.0.0.1:8000/challenges/12  요청 시 >> http://127.0.0.1:8000/challenges/december redirect

 

728x90
SMALL
profile

개발로 자기계발

@김잠봉

틀린부분이나 조언이 있다면 언제든 환영입니다:-)