2 พฤษภาคม 2560

Published 5/02/2560 by with 0 comment

สร้างเว็บด้วย Bottle : ตอนที่ 2 องค์ประกอบเบื้องต้น

ในตอนที่ 2 องค์ประกอบเบื้องต้น ของบทความชุด "สร้างเว็บด้วย Bottle" เรามาทำความรู้จักกับองค์ประกอบเบื้องต้นของตัว Bottle

ควบคุมที่ตั้งหน้าเว็บ


Request Routing


เราสามารถสร้างหน้าเว็บใน Bottle โดยใช้

[python]@route('ชื่อหน้าเว็บ')[/python]

บนฟังก์ชันที่ต้องการสำหรับหน้าเว็บนั้น เป็น Fixed ลิงค์ไปในตัว

ตัวอย่าง


[python]
from bottle import route, run, template

@route('/hi')
def hi():
return 'Hi'
run(host='localhost', port=8080)
[/python]

เมื่อรัน http://localhost:8080/hi จะแสดง Hi




Dynamic Routes


เป็นการกำหนดหน้าเว็บที่ไม่ Fixed ลิงค์ ขึ้นอยู่กับข้อมูลที่รับมาภายใต้รูปแบบลิงค์ที่กำหนด
เช่น หน้าเว็บ hello/ สามารถรับเป็น hello/hi หรือ hello/อะไร อะไรก็ได้เหมือนกัน

[python]
@route('/hello/<name>')
def index(name):
return template('<b>Hello {{name}}</b>!', name=name)
[/python]

และสามารถกำหนดชนิดข้อมูลที่ต้องการรับจากลิงค์ได้ โดยใช้

[python]<name:filter>[/python]

filter มีดังนี้

  • :int รับได้เฉพาะจำนวนเต็ม

  • :float รับได้เฉพาะจำนวนจริง

  • :path รับได้ตัวอักษรที่ตรงกันรวมทั้ง  slash character

  • :re รับได้เฉพาะที่ถูกต้องตาม re

ตัวอย่าง

[python]
@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, ...)[/python]





HTTP Request Methods


Bottle สามารถรับ request methods โดยรองรับ get(), post(), put(), delete() หรือ patch()
สามารถข้อมูลผ่าน POST ได้ง่าย ๆ ตามนี้

[python]
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."
[/python]





Error Pages


เราสามารถทำหน้าเพจพิเศษแสดงเวลาแจ้งข้อผิดพลาด HTTP status code ได้ ดังนี้

[python]
from bottle import error
@error(404)
def error404(error):
return 'Nothing here, sorry'
[/python]

แสดงหน้าเพจแจ้งเมื่อไม่พบเพจที่ต้องการ 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 ต่อไปนะครับ
ขอบคุณครับ

0 ความคิดเห็น:

แสดงความคิดเห็น

แสดงความคิดเห็นได้ครับ :)