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实现调用其他python脚本的方法
Oct 05 Python
TensorFlow在MAC环境下的安装及环境搭建
Nov 14 Python
[原创]python爬虫(入门教程、视频教程)
Jan 08 Python
让Django支持Sql Server作后端数据库的方法
May 29 Python
详解Django 中是否使用时区的区别
Jun 14 Python
python+Splinter实现12306抢票功能
Sep 25 Python
解决新django中的path不能使用正则表达式的问题
Dec 18 Python
PyCharm安装Markdown插件的两种方法
Jun 24 Python
pytorch 固定部分参数训练的方法
Aug 17 Python
tensorflow如何批量读取图片
Aug 29 Python
Python描述符descriptor使用原理解析
Mar 21 Python
Django+Celery实现动态配置定时任务的方法示例
May 26 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数学运算
2011/12/30 PHP
PHP中使用foreach和引用导致程序BUG的问题介绍
2012/09/05 PHP
php中stdClass的用法分析
2015/02/27 PHP
PHP简单读取PDF页数的实现方法
2016/07/21 PHP
php str_replace替换指定次数的方法详解
2017/05/05 PHP
PHP如何防止用户重复提交表单
2020/12/09 PHP
用javascript获取地址栏参数
2006/12/22 Javascript
javascript检测浏览器flash版本的实现代码
2011/12/06 Javascript
javascript单引号和双引号的区别和处理
2014/05/14 Javascript
JavaScript整除运算函数ceil和floor的区别分析
2015/04/14 Javascript
JavaScript按值删除数组元素的方法
2015/04/24 Javascript
jquery实现input框获取焦点的简单实例
2017/01/26 Javascript
Angular2使用Angular CLI快速搭建工程(一)
2017/05/21 Javascript
详解JS中的柯里化(currying)
2017/08/17 Javascript
Node调用Java的示例代码
2017/09/20 Javascript
如何编写一个完整的Angular4 FormText 组件
2017/11/18 Javascript
浅谈vue项目可以从哪些方面进行优化
2018/05/05 Javascript
js如何实现元素曝光上报
2019/08/07 Javascript
C#返回当前系统所有可用驱动器符号的方法
2015/04/18 Python
selenium+python实现自动化登录的方法
2018/09/04 Python
使用Python3+PyQT5+Pyserial 实现简单的串口工具方法
2019/02/13 Python
Python数据类型之String字符串实例详解
2019/05/08 Python
numpy concatenate数组拼接方法示例介绍
2019/05/27 Python
在Python中预先初始化列表内容和长度的实现
2019/11/28 Python
python+selenium定时爬取丁香园的新型冠状病毒数据并制作出类似的地图(部署到云服务器)
2020/02/09 Python
HTML5 video循环播放多个视频的方法步骤
2020/08/06 HTML / CSS
英国折扣零售连锁店:QD Stores
2018/12/08 全球购物
环保专业大学生职业规划设计
2014/01/10 职场文书
诚信考试倡议书
2014/04/15 职场文书
银行优秀员工事迹材料
2014/05/29 职场文书
个人学习群众路线心得体会
2014/11/05 职场文书
考试作弊检讨书
2015/01/27 职场文书
2015年十一国庆节演讲稿
2015/03/20 职场文书
2019客服个人年终工作总结范文
2019/07/08 职场文书
JavaScript如何利用Promise控制并发请求个数
2021/05/14 Javascript
Python实现学生管理系统(面向对象版)
2021/06/24 Python