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实现绘制树枝简单示例
Jul 24 Python
一篇文章入门Python生态系统(Python新手入门指导)
Dec 11 Python
python中的随机函数random的用法示例
Jan 27 Python
python3中的md5加密实例
May 29 Python
python操作excel文件并输出txt文件的实例
Jul 10 Python
python各类经纬度转换的实例代码
Aug 08 Python
Python 实现的 Google 批量翻译功能
Aug 26 Python
使用 Python 写一个简易的抽奖程序
Dec 08 Python
Tensorflow 卷积的梯度反向传播过程
Feb 10 Python
python实现Thrift服务端的方法
Apr 20 Python
python四个坐标点对图片区域最小外接矩形进行裁剪
Jun 04 Python
Python读写yaml文件
Mar 20 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
《猛禽小队》:DC宇宙的又一超级大烂片
2020/04/09 欧美动漫
php短域名转换为实际域名函数
2011/01/17 PHP
解决js数据包含加号+通过ajax传到后台时出现连接错误
2013/08/01 Javascript
Jquery通过Ajax访问XML数据的小例子
2013/11/18 Javascript
JavaScript通过字典进行字符串翻译转换的方法
2015/03/19 Javascript
JS+CSS实现的拖动分页效果实例
2015/05/11 Javascript
javascript实现鼠标放上后下边对应内容变换的效果
2015/08/06 Javascript
JavaScript数组方法大全(推荐)
2016/07/05 Javascript
BootStrap 超链接变按钮的实现方法
2016/09/25 Javascript
微信小程序 开发经验整理
2017/02/15 Javascript
js实现不提示直接关闭网页窗口
2017/03/30 Javascript
VUE中v-model和v-for指令详解
2017/06/23 Javascript
浅谈vue-lazyload实现的详细过程
2017/08/22 Javascript
three.js 入门案例详解
2018/01/23 Javascript
前端防止用户重复提交js实现代码示例
2018/09/07 Javascript
vue给组件传递不同的值方法
2018/09/29 Javascript
详解微信小程序中组件通讯
2018/10/30 Javascript
利用Vconsole和Fillder进行移动端抓包调试方法
2019/03/05 Javascript
jquery实现自定义树形表格的方法【自定义树形结构table】
2019/07/12 jQuery
javascript设计模式 ? 策略模式原理与用法实例分析
2020/04/21 Javascript
Python内置函数Type()函数一个有趣的用法
2015/02/18 Python
在Python的Flask框架中实现单元测试的教程
2015/04/20 Python
Python格式化日期时间操作示例
2018/06/28 Python
详解python 爬取12306验证码
2019/05/10 Python
为什么说Python可以实现所有的算法
2019/10/04 Python
python3 配置logging日志类的操作
2020/04/08 Python
基于PyQT实现区分左键双击和单击
2020/05/19 Python
100%植物性、有机、即食餐:Sakara Life
2018/10/25 全球购物
澳大利亚排名第一的狂热牛仔品牌:ONETEASPOON
2018/11/20 全球购物
Rhone官方网站:男士运动服装、健身服装和高级运动服
2019/05/01 全球购物
大学毕业感言一句话
2014/02/06 职场文书
出纳试用期自我鉴定
2014/04/07 职场文书
党建工作经验交流材料
2014/05/25 职场文书
奥巴马经典演讲稿
2014/09/13 职场文书
教师学习心得体会范文
2016/01/21 职场文书
Java输出Hello World完美过程解析
2021/06/13 Java/Android