ចំណុចពិសេសមួយនៅក្នុងកញ្ចប់ 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>