[PYTHON] 장고 양식 '초기'와 '바운드 데이터'의 차이점은 무엇입니까?
PYTHON장고 양식 '초기'와 '바운드 데이터'의 차이점은 무엇입니까?
주어진 예를 들면 :
class MyForm(forms.Form):
name = forms.CharField()
다음 두 코드 조각의 차이점을 파악하려고합니다.
"바운드 데이터"스타일 :
my_form = MyForm({'name': request.user.first_name})
"초기 데이터"스타일 :
my_form = MyForm(initial={'name': request.user.first_name})
설명서는 "초기 값은 동적 초기 값입니다"라고 제안하는 것 같지만 생성자에 "바인딩 된 데이터"를 전달할 수 있다는 것은 똑같은 작업을 수행합니다. 과거에는 동적 데이터 값에 초기 데이터를 사용했지만 좀 더 직관적 인 "바운드 데이터"스타일을 사용하고 싶지만이 두 스타일 간의 실제 차이점에 대한 정보를 원합니다.
해결법
-
==============================
1.여기에 바인딩 및 언 바운드 형태에 대한 장고 문서의 핵심 부분이 있습니다.
여기에 바인딩 및 언 바운드 형태에 대한 장고 문서의 핵심 부분이 있습니다.
폼이 "바운드 데이터"스타일에서 유효하기 때문에 여러분이 준 예제 폼의 차이를 실제로 볼 수 없습니다. 나이 필드를 추가하여 양식을 확장 해 보겠습니다. 그러면 차이가 더 분명해질 것입니다.
class MyForm(forms.Form): name = forms.CharField() age = forms.IntegerField()
my_form = MyForm({'name': request.user.first_name})
나이가 지정되지 않았으므로이 양식은 유효하지 않습니다. 템플릿에서 폼을 렌더링하면 age 필드에 대한 유효성 검사 오류가 표시됩니다.
my_form = MyForm(initial={'name':request.user.first_name})
이 양식은 언 바운드입니다. 유효성 검사가 트리거되지 않으므로 템플릿을 렌더링 할 때 오류가 표시되지 않습니다.
-
==============================
2.아니, 그 차이점은 무엇입니까 (그리고 나는 그 문서에서 당신이 그 인상을 어디서 얻었는지 알고 싶습니다). 차이점은 유효성 검사가 수행되는지 여부입니다.
아니, 그 차이점은 무엇입니까 (그리고 나는 그 문서에서 당신이 그 인상을 어디서 얻었는지 알고 싶습니다). 차이점은 유효성 검사가 수행되는지 여부입니다.
초기 데이터는 유효성 검사를 트리거하지 않습니다. 예를 들어, 특정 필드를 미리 채우고 다른 필드는 비워 둘 수 있습니다 (필수 항목 임에도 불구하고). 바운드 데이터를 사용했다면 해당 양식을 처음 볼 때조차도 빈 필드의 오류가 발생하게되어 사용자에게는 성가 시게됩니다.
바운드 데이터는 물론 유효성 검사를 트리거합니다. 또한 모델 폼을 사용하는 경우 관련 인스턴스는 초기 데이터가 아닌 바운드 데이터로만 업데이트됩니다.
-
==============================
3.또 다른 차이점은 데이터는 위젯이 구문 분석 할 수있는 반면 초기는 필드 당 것으로 예상한다는 것입니다. 예를 들어 MultiWidgets을 사용하십시오. 이 경우 데이터에는 다음과 같은 내용이 포함되어야합니다.
또 다른 차이점은 데이터는 위젯이 구문 분석 할 수있는 반면 초기는 필드 당 것으로 예상한다는 것입니다. 예를 들어 MultiWidgets을 사용하십시오. 이 경우 데이터에는 다음과 같은 내용이 포함되어야합니다.
{'myfield_0': 'data for subwidget 0', 'myfield_1': 'data for subwidget 1'}
initial은 다음과 같은 것을 기대합니다.
{'myfield': 'data for subwidget 0,data for subwidget 1'}
from https://stackoverflow.com/questions/7920128/difference-between-django-form-initial-and-bound-data by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] 파이썬으로 터미널 출력을 얻으려면 어떻게해야합니까? [복제] (0) | 2018.10.23 |
---|---|
[PYTHON] Mac OS X에서 파이썬을 제어하기 - 환경과 라이브러리 설정하기 (0) | 2018.10.23 |
[PYTHON] 동일한 속성을 참조하는 SQLAlchemy ORM에서 자체 참조 다 대다 관계를 어떻게 성취 할 수 있습니까? (0) | 2018.10.23 |
[PYTHON] 파이썬`for` 문법 : 블럭 코드 vs 싱글 라인 생성자 표현식 (0) | 2018.10.23 |
[PYTHON] 단위 테스트에서 open (file_name) 조롱 (0) | 2018.10.23 |