Web.py 框架学习笔记 - URL处理

最近由于工作需要开始学习基于python的web应用框架web.py。为了方便学习,将学习心得逐日记下以便日后复习。

URL 模板:

web.py提供了一套url处理的模板,在python工程中,只需要将网页结构配置为一个元组(tuple)即可。该元组在web.py中的解析模式为:url路径对应处理url的类名。这里,类名必须和service代码中对应的类名一致。例如,

 1 urls = (
 2     "/tasks/?", "signin",
 3     "/tasks/list", "listing",
 4     "/tasks/post", "post",
 5     "/tasks/chgpass", "chgpass",
 6     "/tasks/act", "actions",
 7     "/tasks/logout", "logout",
 8     "/tasks/signup", "signup"
 9 )
10
11 class signin:
12     def GET(self):
13         pass

URL路径匹配:

url路径的配置不是固定的,可以通过在url路径中嵌入正则表达式来灵活的获取各种url结果。例如,“/taks/(test1|test2)”, “signin”将匹配“/task/test1”或者“/task/test2”。正则匹配方式可以通过下面的例子来理解:

在浏览器中显示url为:http://localhost/myapp/greetings/hello?name=Joe,那么在url元组中,路径为/myapp/greetings/hello。web.py将自动在匹配是加入^和$以防匹配到不同的结果(/hello而非/hello/addnew)。当然,/hello/delete?name=(.+)也是不行的,因为在?后紧跟着一段query。具体url匹配方法可以访问web.ctx

通过url获取变量:

在url中可以通过匹配模式获得相应的变量,并将变量用于相应类的方法(get或post)中。例如,url配置为:"/users/list/(.+)", "list_users",list/后的部分将被抓取到当做变量记下来。在类中可以按如下方式使用:

1 class list_users:
2     def GET(self, name):
3         return "Listing info about user: {0}".format(name)

当然,可以传入不止一个参量。特别要注意的是url query模式下(?后面的字符串)可以通过web.input()方法直接获取。

时间: 2025-01-11 13:22:38

Web.py 框架学习笔记 - URL处理的相关文章

Web.py 框架学习笔记 - ctx

摘要: ctx用于存取web请求的环境变量,基于ThreadedDict类进行实例化.ThreadedDict类可实例化字典类型的对象,该对象某些属性可用于存取处理线程的id. 这样字典化实例的线程池使得web访问的并发控制很好地解决,而且线程之间非常独立. 范例: 1 class example: 2 def GET(self): 3 referer = web.ctx.env.get('HTTP_REFERER', 'http://google.com') 4 raise web.seeot

YMP框架学习笔记(三)------处理器、控制器、拦截器

一.处理器 1.事件处理器 添加类WebEventHandler.java并继承IWebEventHandler public class WebEventHandler implements IWebEventHandler { public void onInitialized() { } public void onRequestReceived(IRequestContext context) { } public void onRequestCompleted(IRequestCont

windows下scrapy框架学习笔记—'scrapy' 不是内部或外部命令

最近几天在深入的学习scrapy框架,但是装完各种需要的基础包之后却发现scrapy命令在别的路径下都用不了,我一开始是把python安装在F:\Python路径下的,安装了scrapy后它默认都会安装在这个路径下,scrapy在路径F:\Python\Scripts路径下,我的scrapy命令只能在此路径下用,因此创建什么工程也都只能在此文件下. 想了一下它的工作原理:它在F:\Python\Scripts路径下,就会在Scripts文件下存在一个scrapy批处理文件,那么在DOS下想要命令

j2ee开发之Spring2.5框架学习笔记

Spring 2.5框架学习笔记 1.是一个开源的控制反转IOC和面向切面AOP的容器框架 2.IOC控制反转 public class PersonServiceBean { private PersonDao personDao = new PersonDao(); publiv void save(Person person){ personDao.save(person); } } 控制反转:应用本身不负责依赖对象personDao的创建以及维护,依赖对象的创建以及维护是由外部容器负责的

JavaSE中线程与并行API框架学习笔记1——线程是什么?

前言:虽然工作了三年,但是几乎没有使用到多线程之类的内容.这其实是工作与学习的矛盾.我们在公司上班,很多时候都只是在处理业务代码,很少接触底层技术. 可是你不可能一辈子都写业务代码,而且跳槽之后新单位很可能有更高的技术要求.除了干巴巴地翻书,我们可以通过两个方式来解决这个问题:一是做业余项目,例如在github上传自己的demo,可以实际使用:二是把自己的学习心得写成博客,跟同行们互相交流. 3.1 线程的初窥门径 我们在之前的文章里提到的程序其实都是单线程程序,也就说启动的程序从main()程

MEAN框架学习笔记

MEAN框架学习笔记 MEAN开发框架的资料非常少.基本的资料还是来自于learn.mean.io站点上的介绍. 于是抱着一种零基础学习的心态,在了解的过程中,通过翻译加上理解将MEAN框架一点点消化而且吸收,一步一步来.慢慢地记录我学习MEAN的点点滴滴. 1.MEAN是可以管理用户的 通过MEAN的mean-cli来管理用户.命令是: $ mean user <email> $ mean user <email> --addRole <role>; $ mean u

《Flask Web Development》学习笔记---chapter4 Web Forms

1.  我们用 wrapper了WTForms的Flask-WTF扩展来处理表单生成和验证. 2.  Cross-Site Request Forgery (CSRF) 保护 配置config,'SECRET_KEY' 3. Form class definition from flask.ext.wtf import Form from wtforms import StringField, SubmitField from wtforms.validators import Required

JavaSE中线程与并行API框架学习笔记——线程为什么会不安全?

前言:休整一个多月之后,终于开始投简历了.这段时间休息了一阵子,又病了几天,真正用来复习准备的时间其实并不多.说实话,心里不是非常有底气. 这可能是学生时代遗留的思维惯性--总想着做好万全准备才去做事.当然,在学校里考试之前当然要把所有内容学一遍和复习一遍.但是,到了社会里做事,很多时候都是边做边学.应聘如此,工作如此,很多的挑战都是如此.没办法,硬着头皮上吧. 3.5 线程的分组管理 在实际的开发过程当中,可能会有多个线程同时存在,这对批量处理有了需求.这就有点像用迅雷下载电视剧,假设你在同时

JavaSE中Collection集合框架学习笔记(2)——拒绝重复内容的Set和支持队列操作的Queue

前言:俗话说“金三银四铜五”,不知道我要在这段时间找工作会不会很艰难.不管了,工作三年之后就当给自己放个暑假. 面试当中Collection(集合)是基础重点.我在网上看了几篇讲Collection的文章,大多都是以罗列记忆点的形式书写的,没有谈论实现细节和逻辑原理.作为个人笔记无可厚非,但是并不利于他人学习.希望能通过这种比较“费劲”的讲解,帮助我自己.也帮助读者们更好地学习Java.掌握Java. 无论你跟我一样需要应聘,还是说在校学生学习Java基础,都对入门和进一步启发学习有所帮助.(关