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 检查数组元素是否存在类似PHP isset()方法
Oct 14 Python
一张图带我们入门Python基础教程
Feb 05 Python
Python md5与sha1加密算法用法分析
Jul 14 Python
Python网络编程详解
Oct 31 Python
python获取酷狗音乐top500的下载地址 MP3格式
Apr 17 Python
对numpy中轴与维度的理解
Apr 18 Python
python excel使用xlutils类库实现追加写功能的方法
May 02 Python
OPENCV去除小连通区域,去除孔洞的实例讲解
Jun 21 Python
python获取命令行输入参数列表的实例代码
Jun 23 Python
Python Opencv实现图像轮廓识别功能
Mar 23 Python
Python模拟伯努利试验和二项分布代码实例
May 27 Python
python三引号如何输入
Jul 06 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
php MYSQL 数据备份类
2009/06/19 PHP
一个简单的php加密解密函数(动态加密)
2013/06/19 PHP
PHP判断是否有Get参数的方法
2014/05/05 PHP
PHP+MySQL删除操作实例
2015/01/21 PHP
浅谈php的优缺点
2015/07/14 PHP
PHP查看当前变量类型的方法
2015/07/31 PHP
php array_values 返回数组的所有值详解及实例
2016/11/12 PHP
浅析PHP7 的垃圾回收机制
2019/09/06 PHP
laravel 解决crontab不执行的问题
2019/10/22 PHP
jquery动态加载图片数据练习代码
2011/08/04 Javascript
js 弹出菜单/窗口效果
2011/10/30 Javascript
网页广告中JS代码的信息监听示例
2014/04/02 Javascript
node.js中的fs.fsync方法使用说明
2014/12/15 Javascript
通过js获取上传的图片信息(临时保存路径,名称,大小)然后通过ajax传递给后端的方法
2015/10/01 Javascript
bootstrap table复杂操作代码
2016/11/01 Javascript
Bootstrap Table使用心得总结
2016/11/29 Javascript
javascript ES6中箭头函数注意细节小结
2017/02/17 Javascript
ionic实现下拉刷新载入数据功能
2017/05/11 Javascript
详解express与koa中间件模式对比
2017/08/07 Javascript
微信小程序中的canvas 文字断行和省略号显示功能的处理方法
2018/11/14 Javascript
聊聊Vue 中 title 的动态修改问题
2019/06/11 Javascript
JS查找孩子节点简单示例
2019/07/25 Javascript
解决vue项目axios每次请求session不一致的问题
2020/10/24 Javascript
Python外星人入侵游戏编程完整版
2020/03/30 Python
python利用有道翻译实现&quot;语言翻译器&quot;的功能实例
2017/11/14 Python
对python产生随机的二维数组实例详解
2018/12/13 Python
利用Python实现某OA系统的自动定位功能
2020/05/27 Python
Python生成随机验证码代码实例解析
2020/06/09 Python
Giglio美国站:意大利奢侈品购物网
2018/02/10 全球购物
网上常见的一份Linux面试题(多项选择部分)
2014/09/09 面试题
公共事业管理本科生求职信
2013/10/07 职场文书
财务专业大学生职业生涯规划范文
2013/12/30 职场文书
毕业生学校推荐信范文
2014/05/21 职场文书
班级元旦晚会开幕词
2015/01/29 职场文书
绵山导游词
2015/02/05 职场文书
总经理致辞
2015/07/29 职场文书