ជាទូទៅ នៅក្នុងគ្រប់ web application ទាំងឡាយ ការទទួលយកទិន្នន័យពី form ត្រូវតែមានការត្រួតពិនិត្យអោយបានត្រឹមត្រូវថា តើទិន្នន័យដែលត្រូវបានបញ្ជូនមកទាំងនោះ ពិតត្រឹមត្រូវទៅតាមអ្វីដែល web application ត្រូវការដែរឬយ៉ាងណា។ យ៉ាងណាម៉ិញ យន្តការត្រួតពិនិត្យមើលទិន្នន័យបញ្ជូនមកពី form ដែលភាសាអង់គ្លេសហៅថា form validation អាចត្រូវធ្វើឡើងពីរដងជាប់គ្នា គឺលើកទីមួយត្រូវធ្វើឡើងនៅផ្នែក client-side ដែលជា browser របស់អ្នកប្រើប្រាស់ដោយប្រើប្រាស់ភាសា JavaScript ហើយការត្រួតពិនិត្យជាលើកទីពីរ គឺត្រូវធ្វើឡើងនៅលើ server ដោយប្រើប្រាស់ភាសា Python ។ ពិនិត្យកម្មវិធីខាងក្រោមនេះ៖
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | //\public\js\main.js class Bicycle{ bicycleForm(formId){ var brand = document.forms[formId][ 'fbrand' ].value; var country = document.forms[formId][ 'fcountry' ].value; var year = document.forms[formId][ 'fyear' ].value; var amount = document.forms[formId][ 'famount' ].value; var price = document.forms[formId][ 'fprice' ].value; if ((brand == "" ) || (country == "" ) || (year == "" ) || (amount == "" ) || (price == "" )){ return false ; } else { var numberRGEX = /^(?:[1-9]\d*|0)?(?:\.\d+)?$/; var intRGEX = /^[0-9]+$/; var numberResult = numberRGEX.test(price); var intResult = (intRGEX.test(year) && intRGEX.test(amount)); if (!numberResult){ alert( 'Please enter a number for price.' ); return false ; } if (!intResult){ alert( 'Please enter a whole number for year and amount.' ); return false ; } } } } //end of class var bicycle = new Bicycle(); |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | #\controllers\bikeform.py import config, re from bottle import template, route, request @route ( "/bikeform" ) def renderForm(): return template( 'bikeform' , data = config.kargs) @route ( "/bikeform" , method = "POST" ) def getFormData(): brand = request.forms.get( "fbrand" ) country = request.forms.get( "fcountry" ) year = request.forms.get( "fyear" ) amount = request.forms.get( "famount" ) price = request.forms.get( "fprice" ) if not re.findall( "[a-zA-Z]" , country): config.kargs[ 'message' ] = "Brand and country name could contain only letter." return template( 'bikeform' , data = config.kargs) elif not (re.findall( "[0-9]" , year) and re.findall( "[0-9]" , amount)): config.kargs[ 'message' ] = "Year and amount must be whole number." return template( 'bikeform' , data = config.kargs) elif not (re.findall(r "[-+]?\d*\.\d+|\d+" , price)): config.kargs[ 'message' ] = "Price must be a number." return template( 'bikeform' , data = config.kargs) else : config.kargs[ 'message' ] = "You have been entering the right data." return template( 'bikeform' , data = config.kargs) |
GitHub: https://github.com/Sokhavuth/Rental-Bicycle-App
Heroku: https://khmerweb-rba.herokuapp.com/