នៅក្នុងនៅក្នុងកញ្ចប់ Bottle.py ក៏ដូចជានៅក្នុង framework ដទៃទៀតដែរ ការកំណត់ផ្លូវ (routing) គឺជាការភ្ជាប់អាស័យដ្ឋាននានា ទៅនឹង function ឬ method ទាំងឡាយ។ ហើយនៅពេលដែលមានការចូលមើលគេហទំព័រតាមអាស័យដ្ឋានទាំងនោះ function ឬ method ទាំងនោះ នឹងត្រូវយកទៅប្រើប្រាស់ជាស្វ័យប្រវត្តិ ផ្តល់លទ្ធផលជាទិន្នន័យផ្សេងៗដែលយើងចង់បាន។
ជាទូទៅ ក្បួនខ្នាតទាក់ទងនឹងការកំណត់ផ្លូវទាំងនោះ គេនិយមរក្សាទុកនៅក្នុងថតដាច់ដោយឡែកមួយ មានឈ្មោះជាឧទាហរណ៍ថា 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 (routing 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, ...)