해결된 질문
작성
·
46
답변 1
0
안녕하세요 sunnnwo님,
"평가"는 코드가 실제로 실행되어 값을 계산하는 것을 의미합니다. reverse
와 reverse_lazy
는 Django에서 URL을 문자열로 반환하는 함수입니다. 이 둘의 차이는 언제 평가되는지에 있습니다:
reverse
: 호출 즉시 평가됩니다. 즉, reverse
를 호출하는 순간 URL이 즉시 계산되어 반환됩니다.
reverse_lazy
: 지연 평가됩니다. 즉, reverse_lazy
는 필요할 때까지 URL 계산을 미룹니다. 일반적으로 클래스 기반 뷰에서 URL을 사용하기 전에 뷰가 로드되기 때문에, 필요할 때까지 미루는 reverse_lazy
가 적합합니다.
따라서, reverse_lazy
는 URL을 즉시 계산하지 않고, 해당 URL이 실제로 필요할 때까지 평가를 미루는 방식으로 동작합니다.
form_valid
메서드form_valid
메서드는 Django의 클래스 기반 뷰에서 폼 데이터가 유효하다고 판단되었을 때 자동으로 호출됩니다. 예를 들어, CreateView
나 UpdateView
같은 뷰에서 폼 검증이 성공하면, Django가 form_valid
메서드를 호출합니다.
보통 form_valid
메서드는 데이터를 저장하고 사용자가 폼 제출 후 이동할 URL을 반환하는 역할을 합니다. 예를 들어, 아래와 같은 코드에서:
class MyCreateView(CreateView):
model = MyModel
form_class = MyForm
success_url = reverse_lazy('success-url')
def form_valid(self, form):
# form의 데이터 저장 등 필요한 작업을 수행
return super().form_valid(form)
form_valid
가 호출되면 폼 데이터가 저장되고, success_url
로 리다이렉트됩니다. form_valid
는 CreateView
나 UpdateView
등의 폼을 사용하는 클래스 기반 뷰에서 자동으로 호출되기 때문에, 사용자가 따로 호출할 필요는 없습니다.