1.諸如:forum?id=1&page=5這樣的,在bottle里,可以通過request.query來訪問這些值,舉例如下;
from bottle import Bottle,run,request,template app=Bottle() @app.route('/forum') def display_forum(): formid=request.query.id pageid=request.query.page or '1' return template('Forum ID:{{id}} (page {{pageid}})',id=formid,pageid=pageid) run(app,host='127.0.0.1',port='3333')
這里,bottle內部關鍵的一點,是使用了FormsDict類。
2.html的<form>處理:
假設,在html文件里,有這么一個東西:
<form action="/login" method="post"> Username:<input name="username" type="text"/> Password:<input name="password" type="password"/> <input value="Login" type="submit"/> </form>
這里的action,指出通過url從form data中獲得數據的過程,可以使用http的get或者post。
如果是get,則這些值就顯性的在url里出現,並且可以通過上面的例子里的BaseRequest.query來獲取。
這里,我們采用post方式。這個時候,數據就存在BaseRequest.forms中(參考FormsDict)
具體代碼如下:
@app.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>''' @app.route('/login',method='POST') def do_login(): username=request.forms.get('username') password=request.forms.get('password') return template("<p>login name is :{{username}} and password is :{{password}}</p>",username=username,password=password) run(app,host='127.0.0.1',port='3333')
還有其他的方式來或許form里的數據,這里列舉如下;

