reverse vs reverse_lazy 사용 이유와 차이점을 이해하지 못 했습니다.
reverse 와 reverse_lazy가 호출 즉시 평가한다. 지연평가한다. 여기서 평가가 의미하는게 뭔지 잘 모르겠습니다. 그리고 form_valid는 어디서 호출이 되는건가요. 전반적으로 이해가 잘 안되어 질문에 두서가 없습니다. 죄송합니다.
답변 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 등의 폼을 사용하는 클래스 기반 뷰에서 자동으로 호출되기 때문에, 사용자가 따로 호출할 필요는 없습니다.
Dockerfile 질문
0
75
2
Logging 질문
0
126
1
0.0.0.0:8000 접속이 안됩니다
0
296
2
블로그 게시
0
171
2
{{form.as_p}} 사용방법 질문드립니다.
0
229
2
urls.py에 라우팅 하는 부분에서요.
0
161
2
handler, static 질문이 있습니다.
0
188
2
build: context 부분이 이해가 되지 않습니다.
1
215
3
직렬화 질문
0
151
1
Celery 수업중 세팅 질문드립니다.
1
181
1
6-1 질문
1
216
1
channels alternative?
1
207
1
크롬에서 서드 파티 쿠키 제한이라는 에러가 뜨는데 혹시 추가로 어떤걸 업데이트 해야지 정상작동 되는지 알 수 있을까요?
0
741
2
dock 환경설정에 대해 잘 이해가 가지 않습니다.
1
282
1
Django Authentication 중에 로그아웃 기능이 안됩니다 ㅠㅠ
1
344
1
학습방식
1
321
2
docker, flower 질문
0
303
1
docker 컨테이너 환경설정 문제
0
1641
1
celery-worker, beat, flower, docker-compose 질문
1
635
1
4-1 공식문서
1
252
1
장고 프로젝트 질문
2
291
1
복습
1
256
1
온라인 ide
1
324
2
vs code
1
364
2





