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实现计算资源图标crc值的方法
Oct 05 Python
读取本地json文件,解析json(实例讲解)
Dec 06 Python
Django框架教程之正则表达式URL误区详解
Jan 28 Python
Python使用Phantomjs截屏网页的方法
May 17 Python
Python闭包执行时值的传递方式实例分析
Jun 04 Python
对Django url的几种使用方式详解
Aug 06 Python
Python脚本操作Excel实现批量替换功能
Nov 20 Python
python和pywin32实现窗口查找、遍历和点击的示例代码
Apr 01 Python
利用python绘制数据曲线图的实现
Apr 09 Python
python golang中grpc 使用示例代码详解
Jun 03 Python
利用python制作拼图小游戏的全过程
Dec 04 Python
python实现简单的名片管理系统
Apr 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&amp;&amp;mysql)一
2006/10/09 PHP
PHP 图片上传代码
2011/09/13 PHP
php中DOMElement操作xml文档实例演示
2013/03/26 PHP
php中判断数组是一维,二维,还是多维的解决方法
2013/05/04 PHP
PHP循环函数使用介绍之PHP基础入门教程
2013/09/21 PHP
PHP中提问频率最高的11个面试题和答案
2014/09/02 PHP
PHP处理会话函数大总结
2015/08/05 PHP
php中文乱码问题的终极解决方案汇总
2017/08/01 PHP
laravel 实现向公共模板中传值 (view composer)
2019/10/22 PHP
jQuery实现鼠标移到元素上动态提示消息框效果
2013/10/20 Javascript
JS替换文本域内的回车示例
2014/02/18 Javascript
Javascript中封装window.open解决不兼容问题
2014/09/28 Javascript
JS实现在网页中弹出一个输入框的方法
2015/03/03 Javascript
jQuery的extend方法【三种】
2016/12/14 Javascript
jQuery Easyui datagrid editor为combobox时指定数据源实例
2016/12/19 Javascript
Vue开发过程中遇到的疑惑知识点总结
2017/01/20 Javascript
react-router实现按需加载
2017/05/09 Javascript
Angular+Node生成随机数的方法
2017/06/16 Javascript
Bootstrap滚动监听组件scrollspy.js使用方法详解
2017/07/20 Javascript
微信小程序实现倒计时60s获取验证码
2020/04/17 Javascript
详解webpack 最简打包结果分析
2019/02/20 Javascript
node(koa2) web应用模块介绍详解
2019/03/29 Javascript
JavaScript从原型到原型链深入理解
2019/06/03 Javascript
Vue路由 重定向和别名的区别说明
2020/09/09 Javascript
JavaScript 获取滚动条位置并将页面滑动到锚点
2021/02/08 Javascript
浅谈Python使用Bottle来提供一个简单的web服务
2017/12/27 Python
python方法生成txt标签文件的实例代码
2018/05/10 Python
python绘制立方体的方法
2018/07/02 Python
OpenCV哈里斯(Harris)角点检测的实现
2020/01/15 Python
python安装第三方库如xlrd的方法
2020/10/31 Python
HTML5网页录音和上传到服务器支持PC、Android,支持IOS微信功能
2019/04/26 HTML / CSS
后进生转化工作制度
2014/01/17 职场文书
对教师的评语
2014/04/28 职场文书
村委会贫困证明范本
2014/09/17 职场文书
学校师德师风整改措施
2014/10/27 职场文书
Win11开始菜单添加休眠选项
2022/04/19 数码科技