ควบคุมที่ตั้งหน้าเว็บ
Request Routing
เราสามารถสร้างหน้าเว็บใน Bottle โดยใช้
@route('ชื่อหน้าเว็บ')
บนฟังก์ชันที่ต้องการสำหรับหน้าเว็บนั้น เป็น Fixed ลิงค์ไปในตัว
ตัวอย่าง
from bottle import route, run, template
@route('/hi')
def hi():
return 'Hi'
run(host='localhost', port=8080)
เมื่อรัน http://localhost:8080/hi จะแสดง
Hi
Dynamic Routes
เป็นการกำหนดหน้าเว็บที่ไม่ Fixed ลิงค์ ขึ้นอยู่กับข้อมูลที่รับมาภายใต้รูปแบบลิงค์ที่กำหนด
เช่น หน้าเว็บ hello/ สามารถรับเป็น hello/hi หรือ hello/อะไร อะไรก็ได้เหมือนกัน
@route('/hello/<name>')
def index(name):
return template('<b>Hello {{name}}</b>!', name=name)
และสามารถกำหนดชนิดข้อมูลที่ต้องการรับจากลิงค์ได้ โดยใช้
<name:filter>
filter มีดังนี้
- :int รับได้เฉพาะจำนวนเต็ม
- :float รับได้เฉพาะจำนวนจริง
- :path รับได้ตัวอักษรที่ตรงกันรวมทั้ง slash character
- :re รับได้เฉพาะที่ถูกต้องตาม re
ตัวอย่าง
@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, ...)
HTTP Request Methods
Bottle สามารถรับ request methods โดยรองรับ get(), post(), put(), delete() หรือ patch()
สามารถข้อมูลผ่าน POST ได้ง่าย ๆ ตามนี้
from bottle import get, post, request # or route
@get('/login') # or @route('/login')
def login():
return '''<form action="/login" method="post">
Username: <input name="username" type="text" />
Password: <input name="password" type="password" />
<input value="Login" type="submit" />
</form>
'''
@post('/login') # or @route('/login', method='POST')
def do_login():
username = request.forms.get('username')
password = request.forms.get('password')
if check_login(username, password):
return "Your login information was correct."
else:
return "Login failed."
Error Pages
เราสามารถทำหน้าเพจพิเศษแสดงเวลาแจ้งข้อผิดพลาด HTTP status code ได้ ดังนี้
from bottle import error
@error(404)
def error404(error):
return 'Nothing here, sorry'
แสดงหน้าเพจแจ้งเมื่อไม่พบเพจที่ต้องการ 404
SimpleTemplate Engine
ในตัวของ Bottle มาพร้อมกับ template engine ที่ชื่อว่า "SimpleTemplate" แลนอกจากนั้น เราสามารถใช้ template engine อื่น ๆ ร่วมกับ Bottle
>>> from bottle import SimpleTemplate
>>> tpl = SimpleTemplate('Hello {{name}}!')
>>> tpl.render(name='World')
u'Hello World!'
ติดตามบทความ สร้างเว็บด้วย Bottle : ตอนที่ 3 ต่อไปนะครับ
ขอบคุณครับ
[python]
ตอบลบ