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里的数据,这里列举如下;