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