Django 실전(8): RoR과 Django의 입력 검사 메커니즘 비교
2676 단어 django
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 형식으로 변경할 수 있습니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Django의 질문 및 답변 웹사이트환영 친구, 이것은 우리의 새로운 블로그입니다. 이 블로그에서는 , 과 같은 Question-n-Answer 웹사이트를 만들고 있습니다. 이 웹사이트는 회원가입 및 로그인이 가능합니다. 로그인 후 사용자는 사용자의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.