Skip to content

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

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

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

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 ต่อไปนะครับ
ขอบคุณครับ

Published on Categories web-developer, web-frameworkTags

About wannaphong

วรรณพงษ์ ภัททิยไพบูลย์ ผู้ดูแลเว็บ wannaphong.com และผู้เขียนบทความบล็อกนี้ นักศึกษาชั้นปีที่ 1 สาขาวิทยาการคอมพิวเตอร์และสารสนเทศ คณะวิทยาศาสตร์ประยุกต์และวิศวกรรมศาสตร์ มหาวิทยาลัยขอนแก่น วิทยาเขตหนองคาย

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องที่ต้องการถูกทำเครื่องหมาย *