ចំណុច​ពិសេស​មួយ​នៅ​ក្នុង​កញ្ចប់ Bottle គឺ​យើង​អាច​កំណត់​ផ្លូវ​ចូល​ទៅ​កាន់​ឯកសារ​ណា​មួយ ដោយ​មិន​ចាំបាច់​សរសេរ​បង្ហាញ​ឈ្មោះ​ឯកសារនោះ នៅ​លើ​ទំព័រ HTML ទាំងឡាយ​ឡើយ​។ ប្រការ​នេះ​បង្កើត​អោយ​មាន​សុវត្ថិភាព​ខ្ពស់​ដល់​ឯកសារ​ទាំងឡាយ​ មាន​នៅ​ក្នុង​កម្មវិធី​គេហទំព័រ Bottle ។

 

នៅ​ក្នុង​ចំណោម​ឯកសារ​ទាំងនោះ មាន​ឯកសារ​មួយ​ចំនួន មាន​ដូច​ជា ឯកសារ CSS, JavaScript, ឯកសារ​រូបភាព និង​ពុម្ព​អក្សរ​ជាដើម ត្រូវ​បាន​គេ​យក​មក​ប្រើប្រាស់​ទន្ទឹម​គ្នា​នឹង​ឯកសារ​ផ្សេង​ៗ​ទៀត​នៅ​ក្នុង​កម្មវិធី​គេហទំព័រ Bottle ផង​ដែរ​។ ឯកសារ​ទាំងនោះ ត្រូវ​គេ​ចាត់​ទុក​ថា​ជា​ឯកសារ static ដែល​ត្រូវ​ដាក់​នៅ​ក្នុង​ថត​ដោយឡែក​ណា​មួយ​ប្រកប​ដោយ​សុវត្ថិភាព​។

 

យ៉ាងណាម៉ិញ ដើម្បី​អាច​ប្រើប្រាស់​ឯកសារ​ static ទាំងឡាយ​បាន យើង​ចាំបាច់​ត្រូវ​បង្កើត​ថត​មួយ​សំរាប់​ឯកសារ​ទាំងនោះ​ជា​មុន​សិន មុន​នឹង​ធ្វើការកំណត់​បណ្តា​ផ្លូវ​ចូល​ទៅ​កាន់​ឯកសារ​ទាំង​នោះ​។ យ៉ាងណាម៉ិញ ថត​សំរាប់​ឯកសារ static អាច​មាន​ឈ្មោះ​ជា​អ្វី​ក៏​បាន​ដែរ មាន​ដូចជា ៉"static" ឬ "public" ជាដើម​។ ពិនិត្យ​កម្មវិធី​ខាង​ក្រោម​នេះ៖

 

#main.py
from bottle import route, run
from controllers import index
from public import setup
  
@route('/')
def main():
  kargs = {"siteTitle":"Khmer Web", "message":"កម្មវិធី​គេហទំព័រ!"}
  return index.render(**kargs)
  
run(host='localhost', port=9000, debug=True, reloader=True)

 

#public\setup.py
from bottle import route, static_file
 
@route('/static/scripts/<filename>')    
def server_static(filename):
  return static_file(filename, root='./public/js')
  
@route('/static/styles/<filename>')    
def server_static(filename):
  return static_file(filename, root='./public/css')
  
@route('/static/images/<filename>')    
def server_static(filename):
  return static_file(filename, root='./public/images')
  
@route('/static/fonts/<filename>')    
def server_static(filename):
  return static_file(filename, root='./public/fonts')

 

#\controllers\index.py
from bottle import template
 
def render(**kargs):
  return template('index', data=kargs)

 

<!--\views\index.tpl-->
<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8"/>
    <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
    <title>{{data['siteTitle']}}</title>
    <script src="/static/scripts/main.js"></script>
    <link href="/static/styles/main.css" rel="stylesheet"></link>
    <link href="/static/images/site_logo.png" rel="icon" ></link>
    <link href="/static/fonts/setup.css" rel="stylesheet"></link>
  </head>
    
  <body>
    <h1>{{data['message']}}</h1>
  </body>
</html>