浅析Python的web.py框架中url的设定方法


Posted in Python onJuly 11, 2016

网页中的数据在传递的时候有GET和POST两种方式,GET是以网址的形式传参数,在web.py中有着很好的匹配,如果我们配置以下的urls

urls =(
  '/','index',
  '/weixin/(.*?)','WeixinInterface'
  
  )

先不考虑/weixin/后面的东西,现在我们来写index的类

class index:
  def GET(self):
    i = web.input(name = 'kevinkelin',age = 100)     
    return render.index(i.name,i.age)

随便写一个index.html模板文件

$def with(name,age)
$if name:
  I just want to say <em>hello</em> to $name, he is $age years old
$else:
  <em>hello</em>,world!

当访问http://127.0.0.1:8080/ 此时没有传递name与age的值,由于我的GET函数里定义了默认的name与age的值,所以程序会将kevinkelin与26传递到模板中去得到以下的输出

I just want to say hello to kevinkelin, he is 100 years old

当访问http://127.0.0.1:8080/?name=yyx&age=26 即向GET函数中传递name = yyx and age = 26的时候得到以下的输出

I just want to say hello to yyx, he is 26 years old

 我们也可以不定义默认的的参数,即定义为空

i = web.input(name = None,age = None)

当访问http://127.0.0.1:8080/ 的时候将会得到 hello,world!的输出即模板中的else
但是如果你不定义name和age将会出错

i = web.input()

这是因为后面你将i.name与i.age分配到模板当中去,但是全局变量里又没有这两个变量,所以会报错
但有时我们想这样传递参数,不想加那个“?”这时我们得要更改urls规则

urls =(
  '/name=(.*)&age=(.*)','index',
  '/weixin/(.*?)','WeixinInterface'  
  )

重新写class index

class index:
  def GET(self,name,age):
    return render.index(name,age)

这里是将url的参数通过正则匹配然后传递到index类中的GET的参数中
当访问http://127.0.0.1:8080/name=yyx&age=26 时将得到

I just want to say hello to yyx, he is 26 years old

第二种方法看似简单,但其实不好控制,要求写的正则工作量加大了
如果我想知道到底有多少参数通过GET方式传递过来,我可以直接return 来看一下到底有哪些传递过来了
接下来看一下post来的数据:
我们可以制作一个简单的表单或者直接使用fiddler来构造数据进行POST传值 

def POST(self):
    data = web.data()    
    return data

浅析Python的web.py框架中url的设定方法

我想看一下得到的数据类型

return type(data)

得到的是<type 'str'>,也就是说web.py已经将post的数据转换成了str类型
那么我来试一下传递xml

<xml>
<ToUserName>yanxingyang</ToUserName>
<FromUserName>study_python</FromUserName>
<CreateTime>123456</CreateTime>
<MsgType>text</MsgType>
<Content>Just a test</Content>
</xml>

其实这个微信的XML格式做了一些更改,我来试着使用lxml对它进行解析

from lxml import etree
data = web.data()
xml = etree.fromstring(data)
content = xml.find(‘Content').text
return content

得到的结果很好

浅析Python的web.py框架中url的设定方法

Python 相关文章推荐
python共享引用(多个变量引用)示例代码
Dec 04 Python
Python中的模块和包概念介绍
Apr 13 Python
Python计算已经过去多少个周末的方法
Jul 25 Python
python中验证码连通域分割的方法详解
Jun 04 Python
解决python写入mysql中datetime类型遇到的问题
Jun 21 Python
Python实现直方图均衡基本原理解析
Aug 08 Python
python 爬取学信网登录页面的例子
Aug 13 Python
在OpenCV里使用特征匹配和单映射变换的代码详解
Oct 23 Python
python用requests实现http请求代码实例
Oct 31 Python
对Tensorflow中Device实例的生成和管理详解
Feb 04 Python
使用Keras加载含有自定义层或函数的模型操作
Jun 10 Python
Numpy 多维数据数组的实现
Jun 18 Python
深入解析Python的Tornado框架中内置的模板引擎
Jul 11 #Python
使用Python的Tornado框架实现一个Web端图书展示页面
Jul 11 #Python
Windows中使用wxPython和py2exe开发Python的GUI程序的实例教程
Jul 11 #Python
Python的requests网络编程包使用教程
Jul 11 #Python
Python的SQLalchemy模块连接与操作MySQL的基础示例
Jul 11 #Python
Python中的异常处理相关语句基础学习笔记
Jul 11 #Python
Python编写简单的HTML页面合并脚本
Jul 11 #Python
You might like
IIS+fastcgi下PHP运行超时问题的解决办法详解
2013/06/20 PHP
php函数间的参数传递(值传递/引用传递)
2013/09/23 PHP
PHP抓屏函数实现屏幕快照代码分享
2014/01/02 PHP
php过滤html标记属性类用法实例
2014/09/23 PHP
php str_replace替换指定次数的方法详解
2017/05/05 PHP
PHP多进程编程之僵尸进程问题的理解
2017/10/15 PHP
PHP实现数组转JSon和JSon转数组的方法示例
2018/06/14 PHP
PHP-FPM和Nginx的通信机制详解
2019/02/01 PHP
EXT窗口Window及对话框MessageBox
2011/01/27 Javascript
Javascript面向对象设计一 工厂模式
2011/12/20 Javascript
AngularJS仿苹果滑屏删除控件
2016/01/18 Javascript
学习JavaScript设计模式之模板方法模式
2016/01/20 Javascript
bootstrap模态框跳转到当前模板页面 框消失了而背景存在问题的解决方法
2020/11/30 Javascript
js的OOP继承实现(必看篇)
2017/02/18 Javascript
Vue中使用vux配置代码详解
2018/09/16 Javascript
JQuery特殊效果和链式调用操作示例
2019/05/13 jQuery
vue-amap根据地址回显地图并mark的操作
2020/11/03 Javascript
原生js实现自定义难度的扫雷游戏
2021/01/22 Javascript
[43:57]LGD vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
基于python 处理中文路径的终极解决方法
2018/04/12 Python
python print 按逗号或空格分隔的方法
2018/05/02 Python
Django objects的查询结果转化为json的三种方式的方法
2018/11/07 Python
django的ORM模型的实现原理
2019/03/04 Python
python如何删除文件、目录
2020/06/23 Python
python3:excel操作之读取数据并返回字典 + 写入的案例
2020/09/01 Python
CSS3 分类菜单效果
2019/05/27 HTML / CSS
深入剖析webstorage[html5的本地数据处理]
2016/07/11 HTML / CSS
利用html5 file api读取本地文件示例(如图片、PDF等)
2018/03/07 HTML / CSS
Html5自定义字体解决方法
2019/10/09 HTML / CSS
全球立体声:World Wide Stereo
2018/09/29 全球购物
波兰办公用品和学校用品在线商店:Dlabiura24.pl
2020/11/18 全球购物
中专生职业生涯规划书范文
2013/12/29 职场文书
中年人生感言
2014/02/04 职场文书
理想点亮人生演讲稿
2014/05/21 职场文书
Nginx进程管理和重载原理详解
2021/04/22 Servers
Python3中最常用的5种线程锁实例总结
2021/07/07 Python