2010-08-05 4 views
2

장고 양식 유효성 검사기 이해 : http://docs.djangoproject.com/en/dev/ref/forms/validation/내가 여기 장고 문서를 읽은

나는 또한 구글과 스택 오버플로 검색 결과의 수를 탐색했습니다,하지만 나는 할 수 없었다 아래 내 질문에 답하십시오.

예를 들어 "제품 이름"이라는 CharField가있는 "위젯"이라는 모델이 있다고 가정 해 보겠습니다. 이제 "product_name"의 허용 가능한 문자를 [a-zA-Z0-9]와 아포스트로피, 대시 및 밑줄 (즉 '- _)로 제한하고 제한된 문자를 입력하면 사용자에게 양식 오류를 표시하려고한다고 가정 해 보겠습니다. .

위의 연구에서 이러한 문자를 확인하기 위해 어딘가에 유효성 검사 기능을 만들어야 함을 알았습니다.

내 특정 질문 :
1과 같은 유효성 검사 기능이 내 장고 프로젝트에 거주해야하는 위치에 가장 좋은 방법은 무엇입니까?
2.이 유효성 검사 기능은 어디에서 호출합니까?
3. "불량"문자를 입력하면 사용자에게 오류가 어떻게 표시됩니까?
4. 샘플 검증 기능을 게시 할 사람이 친절한가요?

감사합니다. 제공 할 수있는 도움에 감사드립니다.

답변

2

가능한 경우 Chefsmart의 답변으로 이동하십시오. 다음은 도움이되는 샘플 유효성 검사 함수의 예입니다.

class MyCustomInvoiceForm(forms.Form): 
    serial_number = forms.IntegerField(min_value = 1, initial = 1) 
    # Other fields. I am interested in serial_number. 

    def clean_serial_number(self): 
     serial_number = self.cleaned_data.get('serial_number') 
     if not serial_number: 
      return 

     return _my_custom_validation(serial_number) 

    def _my_custom_validation(self, serial_number): 
     serial_number = int(serial_number) 
     if not ((serial_number - 1) % 10 == 0): 
      message = "Serial number should be 1 or one greater than a multiple of 10 (Example: 1, 11, 21 etc.)" 
      raise forms.ValidationError(message) 
     return serial_number 

이 코드는 내가 수행 한 프로젝트의 코드 스 니펫입니다. 고객은 일련 번호에 대해 흥미로운 확인 논리를 요구했습니다.

관련 문제