TurboGears - Doğrulama

İyi bir Formlar pencere öğesi kitaplığında bir giriş doğrulama özelliği olmalıdır. Örneğin, kullanıcı, doğrulama için başka herhangi bir programa dayalı yönteme (JavaScript işlevi gibi) başvurmadan, zorunlu bir alana veri girmeye veya bir e-posta alanının geçerli bir e-posta içerip içermediğini doğrulamaya zorlanmalıdır.

ToscaWidgets Forms Library'nin eski sürümleri, doğrulama desteği için FormEncode modülüne güveniyordu. ToscaWidgets2 artık tw2.core modülünde yerleşik doğrulama desteğine sahiptir. Bununla birlikte, FormEncode doğrulama tekniklerini kullanmak hala mümkündür.

ToscaWidgets formunu doğrulamaya tabi tutmak için @validate decorator kullanılır.

@validate(form, error_handler, validators)
  • ’form’ doğrulanacak ToscaWidgets form nesnesidir.

  • ‘error-handler’ form hatalarını işlemek için kullanılan denetleyici yöntemidir.

  • ‘validators’ FormEncode doğrulayıcıları içeren bir sözlük nesnesidir.

Doğrulayıcı Türleri

Tw2.core modülü, diğer doğrulayıcıların miras alındığı bir doğrulayıcı sınıfı içerir. Buna dayalı olarak özel bir doğrulayıcı tasarlamak da mümkündür. Önemli doğrulayıcılardan bazıları aşağıda açıklanmıştır -

LengthValidator- Bir değerin önceden belirlenmiş bir uzunluğa sahip olup olmadığını kontrol edin. Minimum ve maksimum limitler, minimum ve maksimum parametrelerle tanımlanır. Min ve max altındaki ve üzerindeki uzunluklar için özel mesajlar, tooshort ve takım boyu parametresi olarak belirtilebilir.

tw2.core.LengthValidator(min = minval, max = maxval, 
   msgs = { 'tooshort': (‘message for short length’), 
   'toolong': (‘message for long length)})

RangeValidator- Genellikle RangeField ile birlikte kullanılır. Bir sayısal alanın değerini minimum ve maksimum sınırlar içinde doğrulamak faydalıdır. Hızlı bağlantı ve takım boyu parametreleri için mesajlar özelleştirilebilir.

tw2.core.RangeValidator(min = minval, max = maxval, 
   msgs = { 'tooshort': (‘message for short length’), 
   'toolong': (‘message for long length)})

IntValidator- Bu sınıf, RangeValidator'dan türetilmiştir. Bu, normalde normal bir metin alanındaki girişin tamsayı verileri içerip içermediğini doğrulamak için kullanılır. Minimum ve maksimum limitler ve ayrıca hata mesajları ayarlanabilir. Ek olarak, tamsayı olmayan giriş için hata mesajı 'notint' parametresi olarak belirtilebilir.

tw2.core.IntValidator(msgs = {‘notint’:’Must be Integer’})

OneOfValidator - Bu doğrulayıcı, kullanıcıyı yalnızca listedeki mevcut seçeneklerden bir değer seçmeye zorlar.

tw2.core.OneOfValidator(values = [option1, option2,..], 
   msgs = {‘notinlist’:’Not in List’}}

DateValidator- Kullanıcı girişinin geçerli bir tarih olmasını sağlamak için çok kullanışlıdır. Tarih biçimi (varsayılan YMD'dir) ve hata mesajı özelleştirilebilir. Minimum ve maksimum tarih sınırları da belirtilebilir. DateTimeValidator, DateTime sınıfının nesnesini doğrulamak için de kullanılabilir.

tw2.core.DateValidator(msgs = {format = ’%Y-%m-%d’, 
   'baddatetime': ('baddate', ('Must follow date format $format_str'))}

EmailValidator- Kullanıcı girişini geçerli bir e-posta adresine göre doğrular. Bu sınıf, daha genel bir RegexValidator'dan miras alınır.

tw2.core.EmailValidator(msgs = {'badregex': ('bademail', 
   ('Must be a valid email address')) }

UrlValidator- Bu sınıf da RegexValidator'dan miras alınır. Kullanıcı girişini geçerli bir URL için doğrular.

tw2.core.UrlValidator(msgs = {'badregex': ('badurl', ('Must be a valid URL’)) }

MatchValidator- Bir alanın değerinin diğeriyle eşleşip eşleşmediğini onaylar. Bu özellikle, kullanıcının bir şifre alanı seçmesi ve onaylaması gerektiğinde kullanışlıdır. MatchValidator'ın tipik kullanımı aşağıda gösterilmiştir -

import tw2.core as twc
import tw2.forms as twf
  
  class AdmissionForm(twf.Form):
      class child(twf.TableLayout):
         validator = twc.MatchValidator('pw', 'pwconfirm')
         pw = twf.PasswordField()
         pwconfirm = twf.PasswordField()

Kontrollerden herhangi biri başarılı olursa, doğrulamanın başarılı olmasının istendiği bir bileşik doğrulayıcı inşa etmek de mümkündür. Diğer durumlarda, yalnızca giriş tüm kontrolleri geçerse doğrulamanın başarılı olmasını isteyebilirsiniz. Bunun için tw2.core, genişletilebilir CompoundValidator'ın alt sınıfları olan Herhangi Biri ve Tümü doğrulayıcıları sağlar.