នៅក្នុងនៅក្នុង Bottle ក៏ដូចជានៅក្នុង framework ដទៃទៀតដែរ ការកំណត់ផ្លូវ (routing) គឺជាការភ្ជាប់អាស័យដ្ឋាននានា ទៅនឹង function ឬ method ទាំងឡាយ។ ហើយនៅពេលដែលមានការចូលមើលគេហទំព័រតាមអាស័យដ្ឋានទាំងនោះ function ឬ method ទាំងនោះ នឹងត្រូវយកទៅប្រើជាស្វ័យប្រវត្តិ។
ជាទូទៅ ក្បួនខ្នាតទាក់ទងនឹងការកំណត់ផ្លូវទាំងនោះ គេនិយមរក្សាទុកនៅក្នុង package ដាច់ដោយឡែកមួយ មានឈ្មោះថា controllers សំរាប់យកទៅប្រើនៅក្នុងឯកសារដែលជាកម្មវិធីមេ មានដូចជាឯកសារឈ្មោះ main.py ជាដើម។ ពិនិត្យកម្មវិធីខាងក្រោមនេះ៖
#main.py from bottle import route, run from controllers import index @route('/') def main(): return index.hello() run(host='localhost', port=9000, debug=True, reloader=True)
#\controllers\index.py def hello(): return "Hello World!"
យ៉ាងណាម៉ិញ ក្រៅពីការកំណត់ផ្លូវដែលជាអាស័យដ្ឋានដូចខាងលើនេះ យើងក៏អាចកំណត់ផ្លូវតាមរបៀបម៉្យាងទៀត ដែលត្រូវគេចាត់ទុកថាជាការកំណត់ផ្លូវមាន parameter (rounting with parameter) ។ ពិនិត្យកម្មវិធីខាងក្រោមនេះ៖
#main.py from bottle import route, run from controllers import index @route('/<name>') def main(name): return index.hello(name) run(host='localhost', port=9000, debug=True, reloader=True)
#\controllers\index.py def hello(name): return "Hello " + name
ជាលទ្ធផល នៅពេលកម្មវិធីខាងលើនេះដំណើរការ បើយើងចុចបើក browser ចូលទៅកាន់អាស័យដ្ឋានដែលមានឈ្មោះនៅខាងចុងជាឈ្មោះអ្វីមួយ ដូចជា http://localhost:9000/Sokhavuth ជាដើម ឈ្មោះ Sokhavuth នៅខាងចុងនឹងត្រូវផ្តល់ជា argument អោយដល់ function ឈ្មោះ main ដែលនឹងត្រូវផ្តល់ជាបន្តទៀត អោយទៅ function នៅក្នុងថត controllers ។
លើសពីនេះទៀត យើងក៏អាចបង្កើតផ្លូវមួយមាន parameter ជាច្រើនបានដែរ ដោយធ្វើដូចខាងក្រោមនេះ៖
#main.py from bottle import route, run from controllers import index @route('/<name>/<callsign>') def main(name, callsign): return index.hello(name, callsign) run(host='localhost', port=9000, debug=True, reloader=True)
#c:\bottle\controllers\index.py def hello(name,callsign): return "Your name is " + name + ", your callsign is " + callsign
ជាមួយនឹងផ្លូវដែលជាអាស័យដ្ឋានមាន parameter នេះ យើងអាចប្រើវិធីម៉្យាង ក្នុងការជ្រើសរើសយកតែ parameter ណាដែលយើងត្រូវការតែប់ុណ្ណោះ។ វិធីនេះ គឺការកំណត់យកតែ parameter ដែលជាចំនួនគត់ (int) ចំនួនពិត (float) អាស័យដ្ឋានគេហទំព័រ (path) និង regular expression ។ ពិនិត្យកម្មវិធីខាងក្រោមនេះ៖
@route('/object/<id:int>') def callback(id): assert isinstance(id, int) @route('/show/<name:re:[a-z]+>') def callback(name): assert name.isalpha() @route('/static/<path:path>') def callback(path): return static_file(path, ...)