Django 실전(8): RoR과 Django의 입력 검사 메커니즘 비교

2676 단어 django
rails에는'간결하고 완벽한 검증 메커니즘, 비할 바 없이 강한 표현식과 검증 프레임워크'가 있다. 라는 책의 7.1절에서 프로듀서를 어떻게 검증하는지 보여주었다.
class Product < ActiveRecord::Base

    validates :title, :description, :image_url, :presence => true

    validates :price, :numericality => {:greater_than_or_equal_to => 0.01}

    validates :title, :uniqueness => true

    validates :image_url, :format => {

        :with => %r{\.(gif|jpg|png)$}i,

        :message => 'must be a URL for GIF, JPG or PNG image.'

    }

end


설명이 필요합니다.
validates :title, :description, :image_url,:presence = > true: 이 세 필드는 비어 있을 수 없습니다.rails 기본값은 비어 있습니다.또한 모델과migration은 분리되어 있기 때문에migration에서 필드를 비울 수 없고 모델에서는 비울 수 있거나 반대로 정의할 수 있습니다.validates: price,:numericality => {:greater than or equal to => 0.01}: price 필드는 유효한 숫자이며 0.01 validates: image 보다 작지 않아야 합니다url, :format => {…}: image_url는 반드시 세 가지 확장명으로 끝내야 한다. 여기서 유효한 url인지 검증하지 않은 것이 더 무서운 것은 이 검증 문법은rails3이다.0부터 지원되며 이전 릴리즈에서는 다음과 같이 작성됩니다.
class Product < ActiveRecord::Base

    validates_presence_of :title, :description, :image_url

    validates_numericality_of :price

    validates_format_of :image_url,:with => %r{^http:.+.(gif|jpg|png)$}i,

    :message => "must be a URL for a GIF, JPG, or PNG image"

    protected

        def validate

            errors.add(:price, "should be positive") unless price.nil? || price > 0.0

        end

end


 
간결한 rails 검증에 또 어떤 기능이 있는지 (구판 문법): validates_acceptance_of: 지정한 checkbox가 선택되어야 하는지 확인합니다.이것은 아무래도 form의 검증이어야 하는데 모델과는 무관하다validatesassociated: 연관 관계 검증validatesconfirmation_of: xxx 및 xxx 검증confirmation의 값은 같아야 합니다.이건 어떻게 봐도 form의 검증이고 모델과는 무관한validateslength_of: 길이 확인 validateseach는 Block을 사용하여 하나 이상의 인자validates 를 검사합니다exclusion_of 지정된 데이터validates 를 포함하지 않는 체크 대상 확인inclusion_of 확인 대상이 지정한 범위에 포함됩니다validatesuniqueness_of 검사 대상이 중복되지 않는지 여부는more and more, and more, and more...
 
Django로 돌아가.Django의 검증에는 Tier 3 메커니즘이 있습니다. 1.Field 유형 확인데이터베이스 필드 유형에 대응하는 Field 유형 외에도 EmailField, FileField, FilePathField, ImageField, IPAddressField, PhoneNumberField, URLField, XMLField 등이 있다.Field 옵션 확인예를 들어null=true,blank=true,choices,editable,unique,uniquefor_date,unique_for_month,unique_for_예아, 잠깐만.일부 Field는 자신만의 옵션도 있고 데이터를 제약하는 데도 사용할 수 있다.3. 폼(Form) 검증.Form에서 검증 방법을 정의할 수도 있습니다.전체 Form에 대한 유효성 검사 방법 clean 또는 양식 항목에 대한 유효성 검사 방법을 정의할 수 있습니다:cleanxxx.
 
앞에서 세운 Product 모델에는 비워둘 수 없고 숫자에 부합해야 한다는 검증이 기본적으로 포함되어 있기 때문에 다음과 같은 검증이 필요하다.price>0: Form에서 검증해야 합니다.2. title 고유 유효성 검사: Model에서 유효성 검사;3. 이미지 검증url의 확장자:Form에서 검증하는 김에 모델에서URLField 형식으로 변경할 수 있습니다.

좋은 웹페이지 즐겨찾기