Python的Bottle框架中实现最基本的get和post的方法的教程


Posted in Python onApril 30, 2015

1、GET方式:
  

# -*- coding: utf-8 -*-
#!/usr/bin/python
# filename: GETPOST_test.py
# codedtime: 2014-9-20 19:07:04


import bottle

def check_login(username, password):
  if username == '123' and password == '234':
    return True
  else:
    return False

@bottle.route('/login')
def login():
  if bottle.request.GET.get('do_submit','').strip(): #点击登录按钮
    # 第一种方式(latin1编码)
##    username = bottle.request.GET.get('username','').strip() # 用户名
##    password = bottle.request.GET.get('password','').strip() # 密码

    #第二种方式(获取username\password)(latin1编码)
    getValue = bottle.request.query_string
##    username = bottle.request.query['username'] # An utf8 string provisionally decoded as ISO-8859-1 by the server
##    password = bottle.request.query['password'] # 注:ISO-8859-1(即aka latin1编码)
    #第三种方式(获取UTF-8编码)
    username = bottle.request.query.username   # The same string correctly re-encoded as utf8 by bottle
    password = bottle.request.query.password   # The same string correctly re-encoded as utf8 by bottle
    
    print('getValue= '+getValue,
       '\r\nusername= '+username,
       '\r\npassword= '+password) # test
    
    if check_login(username, password):
      return "<p> Your login information was correct.</p>"
    else:
      return "<p>Login failed. </p>"
  else:
    return ''' <form action="/login" method="get">
           Username: <input name="username" type="text" />
           Password: <input name="password" type="password" />
           <input value="Login" name="do_submit" type="submit">
          </form>
        '''

bottle.run(host='localhost', port=8083)

这里注意说一下Bottle编码的问题,只有第三种方式会将我们输入的字符如果是UTF-8重新编码为UTF-8,当你的内容里有中文或其他非英文字符时,这种方式就显的尤为重要。

运行效果如下:

Python的Bottle框架中实现最基本的get和post的方法的教程

2、POST方式:
 

# -*- coding: utf-8 -*-
#!/usr/bin/python
# filename: GETPOST_test.py
# codedtime: 2014-9-20 19:07:04


import bottle

def check_login(username, password):
  if username == '123' and password == '234':
    return True
  else:
    return False

@bottle.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>
      '''

@bottle.route('/login', method='POST')
def do_login():
  # 第一种方式
#  username = request.forms.get('username')
#  password = request.forms.get('password')

  #第二种方式
  postValue = bottle.request.POST.decode('utf-8')
  username = bottle.request.POST.get('username')
  password = bottle.request.POST.get('password')

  
  if check_login(username, password):
    return "<p> Your login information was correct.</p>"
  else:
    return "<p>Login failed. </p>"

bottle.run(host='localhost', port=8083)

登录网站、提交文章、评论等我们一般都会用POST方式而非GET方式,那么类似于第二种方式的编码就很用用处,能够正确的处理我们在Form中提交的内容。而第一种则可能会出现传说中的乱码问题,谨记!!!

Python 相关文章推荐
python中查找excel某一列的重复数据 剔除之后打印
Feb 10 Python
详解Python的collections模块中的deque双端队列结构
Jul 07 Python
Python编程实现及时获取新邮件的方法示例
Aug 10 Python
python 匹配url中是否存在IP地址的方法
Jun 04 Python
python爬取微信公众号文章
Aug 31 Python
解决python中使用PYQT时中文乱码问题
Jun 17 Python
Python定时任务工具之APScheduler使用方式
Jul 24 Python
django 框架实现的用户注册、登录、退出功能示例
Nov 28 Python
windows环境中利用celery实现简单任务队列过程解析
Nov 29 Python
Python configparser模块配置文件过程解析
Mar 03 Python
python实现简单的购物程序代码实例
Mar 03 Python
python框架flask入门之路由及简单实现方法
Jun 07 Python
Python中使用Beautiful Soup库的超详细教程
Apr 30 #Python
Python中正则表达式的详细教程
Apr 30 #Python
详解在Python程序中使用Cookie的教程
Apr 30 #Python
处理Python中的URLError异常的方法
Apr 30 #Python
介绍Python的Urllib库的一些高级用法
Apr 30 #Python
python插入数据到列表的方法
Apr 30 #Python
Python的Urllib库的基本使用教程
Apr 30 #Python
You might like
关于时间计算的结总
2006/12/06 PHP
常见php数据文件缓存类汇总
2014/12/05 PHP
[原创]php获取数组中键值最大数组项的索引值
2015/03/17 PHP
php的debug相关函数用法示例
2016/07/11 PHP
微信支付开发动态链接Native支付
2016/07/12 PHP
详解Laravel5.6 Passport实现Api接口认证
2018/07/27 PHP
php实现数组中出现次数超过一半的数字的统计方法
2018/10/14 PHP
复制本贴标题和地址的js代码
2008/07/01 Javascript
Prototype PeriodicalExecuter对象 学习
2009/07/19 Javascript
js 在定义的时候立即执行的函数表达式(function)写法
2013/01/16 Javascript
让html页面不缓存js的实现方法
2014/10/31 Javascript
JavaScript中Number.NEGATIVE_INFINITY值的使用详解
2015/06/05 Javascript
Javascript实现可旋转的圆圈实例代码
2015/08/04 Javascript
javascript实现手机震动API代码
2015/08/05 Javascript
jquery表单插件Autotab使用方法详解
2016/06/24 Javascript
js按条件生成随机json:randomjson实现方法
2017/04/07 Javascript
JavaScript Canvas绘制圆形时钟效果
2020/08/20 Javascript
gulp安装以及打包合并的方法教程
2017/11/19 Javascript
Element-ui table中过滤条件变更表格内容的方法
2018/03/02 Javascript
详解javascript 正则表达式之分组与前瞻匹配
2018/05/30 Javascript
vue打包的时候自动将px转成rem的操作方法
2018/06/20 Javascript
JS实现倒序输出的几种常用方法示例
2019/04/13 Javascript
vue集成一个支持图片缩放拖拽的富文本编辑器
2021/01/29 Vue.js
Python数据结构之Array用法实例
2014/10/09 Python
opencv实现静态手势识别 opencv实现剪刀石头布游戏
2019/01/22 Python
Django密码存储策略分析
2020/01/09 Python
Python QT组件库qtwidgets的使用
2020/11/02 Python
Python文件名匹配与文件复制的实现
2020/12/11 Python
《乞巧》教学反思
2014/02/27 职场文书
《槐乡五月》教学反思
2014/04/25 职场文书
学习十八届四中全会精神思想汇报
2014/10/23 职场文书
小学优秀教师先进事迹材料
2014/12/16 职场文书
授权委托书
2015/01/28 职场文书
贷款收入证明范本
2015/06/12 职场文书
高一英语教学反思
2016/03/03 职场文书
Redis 哨兵集群的实现
2021/06/18 Redis