reverse와 reverse_lazy
reverse
함수 호출 즉시 장고 URLConfig를 읽어서 URL을 찾는다. 따라서 장고 URLConfig가 로드된 이후 호출되어야 한다.
ex) 함수 뷰에서 reverse를 사용한다. 뷰에서 함수는 클라이언트 요청이 있을 때 호출된다. 해당 시점은 URLConfig가 로드된 이후의 시점이므로 reverse를 사용한다.
reverse_lazy
장고 URLConfig가 로드된 이후에 URL을 찾겠다고 미룬다. 장고 URLConfig가 로드되기 전에 호출되어야 하는 경우 사용한다.
ex) 클래스 뷰에서는 reverse_lazy를 사용한다. 서버를 실행하면서 class가 로드되어 정의될 때는 URLConfig가 로드되기 전이다. 따라서 URLConfig가 로드되기 전에 reverse가 호출되면 URLConfig를 읽을 수 없어서 에러가 발생하므로 reverse_lazy를 사용한다.