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数据类型转换函数总结
Mar 11 Python
对于Python中线程问题的简单讲解
Apr 03 Python
Python实现将HTML转换成doc格式文件的方法示例
Nov 20 Python
python tensorflow基于cnn实现手写数字识别
Jan 01 Python
python中subprocess批量执行linux命令
Apr 27 Python
python中int与str互转方法
Jul 02 Python
Python使用try except处理程序异常的三种常用方法分析
Sep 05 Python
Python使用pyshp库读取shapefile信息的方法
Dec 29 Python
SELENIUM自动化模拟键盘快捷键操作实现解析
Oct 28 Python
Python使用re模块验证危险字符
May 21 Python
教你使用Sublime text3搭建Python开发环境及常用插件安装另分享Sublime text3最新激活注册码
Nov 12 Python
Django框架中表单的用法
Jun 10 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 setcookie设置Cookie用法(及设置无效的问题)
2011/07/13 PHP
php中socket通信机制实例详解
2015/01/03 PHP
用JS操作FRAME中的IFRAME及其内容的实现代码
2008/07/26 Javascript
容易被忽略的JS脚本特性
2011/09/13 Javascript
jQuery事件绑定.on()简要概述及应用
2013/02/07 Javascript
js仿百度有啊通栏展示效果实现代码
2013/05/28 Javascript
JS实现让访问者自助选择网页文字颜色的方法
2015/02/24 Javascript
jquery实现公告翻滚效果
2015/02/27 Javascript
纯js代码实现未知宽高的元素在指定元素中垂直水平居中显示
2015/09/12 Javascript
vue2.0开发实践总结之入门篇
2016/12/06 Javascript
js的三种继承方式详解
2017/01/21 Javascript
浅谈js停止事件冒泡 阻止浏览器的默认行为(阻止超连接 #)
2017/02/08 Javascript
jQuery插件HighCharts实现气泡图效果示例【附demo源码】
2017/03/13 Javascript
关于jQuery.ajax()的jsonp碰上post详解
2017/07/02 jQuery
使用html+js+css 实现页面轮播图效果(实例讲解)
2017/09/21 Javascript
JS高级技巧(简洁版)
2018/07/29 Javascript
jQuery pjax 应用简单示例
2018/09/20 jQuery
vue集成百度UEditor富文本编辑器使用教程
2018/09/21 Javascript
Nuxt.js之自动路由原理的实现方法
2018/11/21 Javascript
微信小程序JS加载esmap地图的实例详解
2019/09/04 Javascript
vue 通过 Prop 向子组件传递数据的实现方法
2020/10/30 Javascript
vant-ui组件调用Dialog弹窗异步关闭操作
2020/11/04 Javascript
如何管理Vue中的缓存页面
2021/02/06 Vue.js
flask框架视图函数用法示例
2018/07/19 Python
matplotlib.pyplot绘图显示控制方法
2019/01/15 Python
Python中Selenium模块的使用详解
2020/10/09 Python
想学画画?python满足你!
2020/12/24 Python
浅析rem和em和px vh vw和% 移动端长度单位
2016/04/28 HTML / CSS
CSS3自定义滚动条样式 ::webkit-scrollbar的示例代码详解
2020/06/01 HTML / CSS
奥地利婴儿用品和玩具购物网站:baby-markt.at
2020/01/26 全球购物
会计电算化学生个人的自我评价
2014/02/08 职场文书
《日月潭》教学反思
2014/02/28 职场文书
工厂仓管员岗位职责范本
2014/07/17 职场文书
上党课的心得体会
2014/09/02 职场文书
【海涛dota解说】海涛小满开黑4v5被破两路翻盘潮汐第一视角解说
2022/04/01 DOTA
win10输入法不见了只能打出字母怎么解决?
2022/08/05 数码科技