Django의 form 라이브러리 사용에 대한 자세한 설명

11069 단어
Django에는 form 라이브러리가 있습니다.django라고 합니다.forms, 이 라이브러리는 이 장에서 언급한 HTML 폼 표시와 검증을 포함합니다.다음에 우리는 form 라이브러리에 대해 깊이 있게 이해하고, 그녀를 사용하여contact 폼 응용을 다시 쓴다.
Django의 newforms 라이브러리
땅고 카페에서 자주 볼 수 있어요.newforms라는 단어.사람들이 토론할 때django.newforms, 사실은 우리 이 장에서 소개한django입니다.forms.
개명에는 사실 역사적 원인이 있다.Django가 한 번 일반인에게 발행되었을 때, 복잡하고 이해하기 어려운 폼 시스템이 있었다:django.forms.나중에 그것은 완전히 다시 쓰여졌고, 새로운 버전은'django'라고 개칭되었다.newforms, 이렇게 하면 사람들이 명칭을 통해 구 버전을 사용할 수 있다.Django 1.0이 릴리즈되면 이전 버전의 Django가 릴리즈됩니다.forms는 더 이상 사용하지 않습니다.django.newforms도 마침내 명실상부하게'django'라고 할 수 있다.forms.
폼 프레임워크의 가장 주요한 사용법은 처리할 HTML의 ````에 대한Form 클래스를 정의하는 것이다.이 예에서 우리는 단지 하나의 ```만 있기 때문에 우리는form류를 정의하기만 하면 된다.이 종류는 어디에나 존재할 수 있으며, 심지어는 `views에 직접 쓸 수도 있다.py`` 파일에도 괜찮지만 커뮤니티의 관례는form 클래스를 모두 하나의 파일에 넣는 것이다:forms.py.저장` views.py``의 디렉토리에서 파일을 만들고 다음을 입력합니다.

from django import forms

class ContactForm(forms.Form):
  subject = forms.CharField()
  email = forms.EmailField(required=False)
  message = forms.CharField()


이것은 보기에 간단하고 이해하기 쉬우며 모듈에서 사용하는 문법과 매우 비슷하다.양식의 각 필드(필드)는 Form 클래스의 속성으로서 Field 클래스로 표시됩니다.여기에는 CharField 및 EmailField 유형만 사용할 수 있습니다.각 필드는 기본적으로 필수입니다.이메일을 옵션으로 사용하려면 Required=False를 지정해야 합니다.
파이썬 해석기에 들어가서 이 종류가 무엇을 했는지 살펴보자.첫 번째 작업은 HTML로 표시하는 것입니다.

>>> from contact.forms import ContactForm
>>> f = ContactForm()
>>> print f





접근을 편리하게 하기 위해서, Django는 '' '로고를 사용하여 모든 필드에 라벨을 추가했습니다.이 방법은 묵인 행위를 가능한 한 적합하게 한다.
기본 출력은 HTML 형식과 다른 형식의 출력이 있습니다.

>>> print f.as_ul()
  • Subject:
  • Email:
  • Message:
  • >>> print f.as_p()
    Subject:
    Email:
    Message:
    탭,,, 닫기 표시가 출력에 포함되지 않아서, 추가 줄이나 사용자 정의 형식을 추가할 수 있습니다.
    이런 종류의 방법은 일반적인 상황에서 전체 폼을 신속하게 표시하는 방법일 뿐이다.또한 HTML로 개별 필드를 표시할 수도 있습니다.
    
    >>> print f['subject']
    
    >>> print f['message']
    
    
    

    Form 객체의 두 번째 작업은 데이터를 검증하는 것입니다.데이터를 검사하기 위해 새 쌍Form 이미지를 만들고 정의와 일치하는 사전 유형 데이터를 전송합니다.
    
    >>> f = ContactForm({'subject': 'Hello', 'email': '[email protected]', 'message': 'Nice site!'})
    
    

    Form 실체에 값을 부여하면 귀속form을 획득합니다:
    
    >>> f.is_bound
    True
    
    

    귀속form의 is 호출valid () 방법은 데이터가 합법적인지 알 수 있습니다.각 필드에 대한 값을 전달했기 때문에 Form 전체가 적법합니다.
    
    >>> f.is_valid()
    True
    
    

    만약 우리가 이메일 값을 전송하지 않는다면, 그것은 여전히 합법적이다.이 필드의 속성 required=False를 지정하기 때문입니다.
    
    >>> f = ContactForm({'subject': 'Hello', 'message': 'Nice site!'})
    >>> f.is_valid()
    True
    
    

    그러나 subject나 메시지를 비워 두면 Form 전체가 더 이상 합법적이지 않습니다.
    
    >>> f = ContactForm({'subject': 'Hello'})
    >>> f.is_valid()
    False
    >>> f = ContactForm({'subject': 'Hello', 'message': ''})
    >>> f.is_valid()
    False
    
    

    각 필드에 대한 오류 메시지를 하나씩 볼 수 있습니다.
    
    >>> f = ContactForm({'subject': 'Hello', 'message': ''})
    >>> f['message'].errors
    [u'This field is required.']
    >>> f['subject'].errors
    []
    >>> f['email'].errors
    []
    
    

    모든 방정Form 실체에는 errors 속성이 있습니다. 오류 메시지와 일치하는 필드를 제공하는 사전 테이블입니다.
    
    >>> f = ContactForm({'subject': 'Hello', 'message': ''})
    >>> f.errors
    {'message': [u'This field is required.']}
    
    

    마지막으로Form 실체의 데이터가 합법적이라면 사용할 수 있는 cleaned데이터 속성.이것은 깨끗한 제출 데이터를 포함하는 사전이다.Django의form 프레임워크는 데이터를 검사할 뿐만 아니라, 그것들을 해당하는 Python 형식의 데이터로 변환하는데, 이를 정리 데이터라고 한다.
    
    >>> f = ContactForm({subject': Hello, email: [email protected], message: Nice site!})
    >>> f.is_valid()
    True
    >>> f.cleaned_data
    {message': uNice site!, email: [email protected], subject: uHello}
    
    

    Google contact form은 문자열 형식만 포함하고 유니코드 대상으로 정리됩니다.만약 우리가 정수형이나 날짜형을 사용한다면 form 프레임워크는 적절한 Python 정수형이나datetime를 사용하는 방법을 확보할 것입니다.날짜형 대상.








    자모로 분류: & #13;
    A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 기타















    [JAVA] [문자열] 10 진법 16 진법 으로 변환
    PL / SQL 집합 방법

    좋은 웹페이지 즐겨찾기