នៅ​ក្នុង​នៅ​ក្នុង​កញ្ចប់ Bottle.py ក៏​ដូច​ជា​នៅ​ក្នុង​ 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 (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, ...)