TurboGears - Validasi
Pustaka widget Formulir yang baik harus memiliki fitur validasi masukan. Misalnya, pengguna harus dipaksa memasukkan data di bidang wajib, atau memverifikasi apakah bidang email berisi email yang valid, tanpa menggunakan cara terprogram lainnya (seperti fungsi JavaScript) untuk validasi.
Versi awal ToscaWidgets Forms Library digunakan untuk mengandalkan modul FormEncode untuk dukungan validasi. ToscaWidgets2 sekarang memiliki dukungan validasi built-in yang tersedia dalam modul tw2.core. Namun, masih memungkinkan untuk menggunakan teknik validasi FormEncode.
Untuk memasukkan formulir ToscaWidgets ke validasi, @validate decorator digunakan.
@validate(form, error_handler, validators)
Itu ’form’ adalah objek formulir ToscaWidgets yang akan divalidasi.
Itu ‘error-handler’ adalah metode pengontrol yang digunakan untuk menangani kesalahan formulir.
Itu ‘validators’ adalah objek kamus yang berisi validator FormEncode.
Jenis Validator
Modul tw2.core berisi kelas validator yang mewarisi validator lain. Dimungkinkan juga untuk merancang validator khusus berdasarkan itu. Beberapa validator penting dijelaskan di bawah -
LengthValidator- Periksa apakah suatu nilai memiliki panjang yang ditentukan. Batas minimum dan maksimum ditentukan dengan parameter min dan max. Pesan khusus untuk panjang di bawah dan di atas min dan max dapat ditentukan sebagai parameter tooshort dan toolong.
tw2.core.LengthValidator(min = minval, max = maxval,
msgs = { 'tooshort': (‘message for short length’),
'toolong': (‘message for long length)})
RangeValidator- Biasanya digunakan bersama dengan RangeField. Ini berguna untuk memvalidasi nilai bidang numerik dalam batas minimum dan maksimum. Pesan untuk parameter tooshort dan toolong dapat disesuaikan.
tw2.core.RangeValidator(min = minval, max = maxval,
msgs = { 'tooshort': (‘message for short length’),
'toolong': (‘message for long length)})
IntValidator- Kelas ini diturunkan dari RangeValidator. Ini biasanya digunakan untuk memvalidasi jika input dalam bidang teks normal berisi data integer. Batas minimum dan maksimum serta pesan kesalahan dapat diatur. Selain itu, pesan kesalahan untuk input non-integer dapat ditentukan sebagai parameter 'notint'.
tw2.core.IntValidator(msgs = {‘notint’:’Must be Integer’})
OneOfValidator - Validator ini memaksa pengguna untuk memilih nilai dari opsi yang tersedia di daftar saja.
tw2.core.OneOfValidator(values = [option1, option2,..],
msgs = {‘notinlist’:’Not in List’}}
DateValidator- Sangat berguna untuk memastikan bahwa input pengguna adalah tanggal yang valid. Format tanggal (default adalah YMD) dan pesan kesalahan dapat disesuaikan. Batas tanggal minimum dan maksimum juga dapat ditentukan. DateTimeValidator juga tersedia untuk memverifikasi objek kelas DateTime.
tw2.core.DateValidator(msgs = {format = ’%Y-%m-%d’,
'baddatetime': ('baddate', ('Must follow date format $format_str'))}
EmailValidator- Memvalidasi masukan pengguna terhadap alamat email yang valid. Kelas ini diwarisi dari RegexValidator yang lebih umum.
tw2.core.EmailValidator(msgs = {'badregex': ('bademail',
('Must be a valid email address')) }
UrlValidator- Kelas ini juga diwarisi dari RegexValidator. Ini memvalidasi masukan pengguna untuk URL yang valid.
tw2.core.UrlValidator(msgs = {'badregex': ('badurl', ('Must be a valid URL’)) }
MatchValidator- Mengonfirmasi apakah nilai satu bidang cocok dengan yang lain. Ini sangat berguna, di mana pengguna diminta untuk memilih dan mengonfirmasi bidang kata sandi. Penggunaan umum MatchValidator ditunjukkan di bawah ini -
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()
Dimungkinkan juga untuk membangun validator gabungan, di mana validasi diinginkan untuk berhasil, jika salah satu pemeriksaan lolos. Dalam kasus lain, Anda mungkin ingin validasi berhasil, hanya jika input lolos semua pemeriksaan. Untuk ini, tw2.core menyediakan validator Any dan All, yang merupakan subclass dari CompoundValidator yang dapat diperpanjang.