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 相关文章推荐
windows下python模拟鼠标点击和键盘输示例
Feb 28 Python
在python中的socket模块使用代理实例
May 29 Python
Python写的Discuz7.2版faq.php注入漏洞工具
Aug 06 Python
Python打印scrapy蜘蛛抓取树结构的方法
Apr 08 Python
Python的Flask框架中实现登录用户的个人资料和头像的教程
Apr 20 Python
Python使用win32 COM实现Excel的写入与保存功能示例
May 03 Python
Python运维开发之psutil库的使用详解
Oct 18 Python
python各类经纬度转换的实例代码
Aug 08 Python
Python3离线安装Requests模块问题
Oct 13 Python
Python RabbitMQ实现简单的进程间通信示例
Jul 02 Python
python opencv通过按键采集图片源码
May 20 Python
Python排序算法之插入排序及其优化方案详解
Jun 11 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
PHP5常用函数列表(分享)
2013/06/07 PHP
PHP小技巧之函数重载
2014/06/02 PHP
完美解决在ThinkPHP控制器中命名空间的问题
2017/05/05 PHP
javascript URL锚点取值方法
2009/02/25 Javascript
Extjs Gird 支持中文拼音排序实现代码
2013/04/15 Javascript
js中widow.open()方法使用详解
2013/07/30 Javascript
Node.js实现在目录中查找某个字符串及所在文件
2014/09/03 Javascript
Javascript中的几种URL编码方法比较
2015/01/23 Javascript
nodejs初步体验篇
2015/11/23 NodeJs
jquery ajax双击div可直接修改div中的内容
2016/03/04 Javascript
基于socket.io+express实现多房间聊天
2016/03/17 Javascript
js多个物体运动功能实例分析
2016/12/20 Javascript
Js实现中国公民身份证号码有效性验证实例代码
2017/05/03 Javascript
Ext JS 实现建议词模糊动态搜索功能
2017/05/13 Javascript
详解Angular 中 ngOnInit 和 constructor 使用场景
2017/06/22 Javascript
基于node搭建服务器,写接口,调接口,跨域的实例
2018/05/13 Javascript
[01:04]不如跳舞!DOTA2新英雄玛尔斯的欢乐日常
2019/03/11 DOTA
[03:40]DOTA2抗疫特别篇《英雄年代》
2020/02/28 DOTA
python之wxPython菜单使用详解
2014/09/28 Python
解析Python中的生成器及其与迭代器的差异
2016/06/20 Python
在python中利用KNN实现对iris进行分类的方法
2018/12/11 Python
Python异常处理例题整理
2019/07/07 Python
详解Python多线程下的list
2020/07/03 Python
Python更改pip镜像源的方法示例
2020/12/01 Python
python 对象真假值的实例(哪些视为False)
2020/12/11 Python
味多美官网:蛋糕订购,100%使用天然奶油
2017/11/10 全球购物
《和田的维吾尔》教学反思
2014/04/14 职场文书
乔布斯斯坦福大学演讲稿
2014/05/23 职场文书
物业公司的岗位任命书
2014/06/06 职场文书
酒店端午节活动方案
2014/08/26 职场文书
工作证明范本(2篇)
2014/09/14 职场文书
2014离婚协议书范文(3篇)
2014/11/29 职场文书
2016春季幼儿园小班开学寄语
2015/12/03 职场文书
nginx 反向代理之 proxy_pass的实现
2021/03/31 Servers
Minikube搭建Kubernetes集群
2022/03/31 Servers
vue-cli3.x配置全局的scss的时候报错问题及解决
2022/04/30 Vue.js