ជាទូទៅ នៅក្នុងគ្រប់ web application ទាំងឡាយ ការទទួលយកទិន្នន័យពី form ត្រូវតែមានការត្រួតពិនិត្យអោយបានត្រឹមត្រូវថា តើទិន្នន័យដែលត្រូវបានបញ្ជូនមកទាំងនោះ ពិតត្រឹមត្រូវទៅតាមអ្វីដែល web application ត្រូវការដែរឬយ៉ាងណា។ យ៉ាងណាម៉ិញ យន្តការត្រួតពិនិត្យមើលទិន្នន័យបញ្ជូនមកពី form ដែលភាសាអង់គ្លេសហៅថា form validation អាចត្រូវធ្វើឡើងពីរដងជាប់គ្នា គឺលើកទីមួយត្រូវធ្វើឡើងនៅផ្នែក client-side ដែលជា browser របស់អ្នកប្រើប្រាស់ដោយប្រើប្រាស់ភាសា JavaScript ហើយការត្រួតពិនិត្យជាលើកទីពីរ គឺត្រូវធ្វើឡើងនៅលើ server ដោយប្រើប្រាស់ភាសា Python ។ ពិនិត្យកម្មវិធីខាងក្រោមនេះ៖
//\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();
#\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/