python tornado 基于正则的动态路由映射,路径正则匹配

Tornado框架-基于正则的动态路由映射

1、在路由映射条件里用正则匹配访问路径后缀
2、给每一个正则匹配规则(?P<设置名称>)设置一个名称
3、在逻辑处理的get()方法或post()方法,接收这个正则名称,就会接收到用户访问的后缀路径

路由映射

app=tornado.web.Application(
	handlers=[
		(r"/"                 ,mainPage.IndexHandler),
		(r"/image/(.*)"       ,imagee.CImageHandler),#判断请求路径是否匹配image/,如果匹配执行CImageHandler方法
		(r"/(?P<path>\w*.txt)",mainPage.txtPathHandler),#判断请求路径是否匹配字符串.txt,如果匹配执行txtPathHandler方法
        (r"/index/(?P<num>\d*)/(?P<nid>\d*)", index.indexHandler)#判断请求路径是否匹配字符串index,如果匹配执行MainHandler方法
	],
	template_path = commonData.global_template_path,
	static_path = commonData.global_static_path,
	login_url = "/login"
)

#跳转到前端显示页面
class txtPathHandler(tornado.web.RequestHandler):
    def get(self, path):
        self.render(path)

#逻辑处理
class indexHandler(tornado.web.RequestHandler):  #定义一个类,继承tornado.web下RequestHandler类
    def get(self,num,nid):  #get()方法,接收get方式请求
        print(num,nid)
        self.render("index.html") 

正则匹配规则:

(?P<设置名称>)

匹配的字符集合整理:

\d 对于Unicode规则:匹配任意Unicode十进制数包括0-9。对于8位byte字符串,仅仅只匹配0-9

\s 匹配任意空格字符包括(空格,制表符,换行符,\r,\f,\v)包括许多其他的字符,比如,不同的语言分隔符也将不同,在ASCII里面,仅仅匹配[ \t\n\r\f\v]。 

\S 与\s相反

\w 匹配unicode单词字符,大多数的字符,包括其他的语言的字符,数字与下划线,如果是ASCII标记,则只匹配[a-zA-Z0-9_] 。 

\W 与\w相反

\number 匹配同编号组的内容,每一个组都有一个编号,编号从1开始,比如:(.+) \1 匹配'the the' or '55 55'。但是不匹配'thethe'(提示:两个之间有空格,此处的匹配串中间没有空格)。这样特殊的序列只可以匹配99个组。如果序号是0或者是3位8进制数,都不会被认为是一个组,而是被处理为对应进制所代表的字符。在中括号包含的即合理,所有的数字都毫无意外的被当成字符处理。  

\A  仅仅匹配字符串首部,用来说明当前位置是一个字符串的首部。

\\A 在新行是没有用的,\A只匹配整个字符串的首部。

\b 匹配空字符串,但是只有在单词的后面或者前面才会匹配。一个单词背定义为一组字符序列。一般来说:\b是被定义在\W和\W之间一个分界符,或者\W与字符串首部和尾部。这也就是说:REr'\bfoo\b'匹配'foo', 'foo.', '(foo)', 'bar foo baz',但是不匹配'foobar' or 'foo3'.默认的Unicode字母数字都是在Unicode表达式中使用,但是也可以通过使用ASCIIflag进行切换((?A)或者re.A)。单词的分界线由归属地决定,如果使用了local flag。在单词序列中,\b代表删除符号(回溯一个字符,类比ASCII).

\B 匹配空字符串,但是只有他不是在单词首部或者尾部才会匹配,也就是说r'py\B'matches 'python', 'py3', 'py2', but not 'py', 'py.', or 'py!'.\B与\b所表达的意思相反。 

\Z 匹配字符串末尾。

 

参考链接:https://blog.csdn.net/rubikchen/article/details/80490041

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python Tornado是一个用于构建高性能Web应用的异步框架。它基于事件循环和非阻塞IO的特性,可以处理大量并发连接,适用于实时应用程序和长轮询服务。在使用Tornado框架时,可以通过导入tornado.ioloop和tornado.web模块来创建应用程序。引用中的代码展示了一个简单的Tornado应用程序的快速入门示例。该示例创建了一个名为MainHandler的处理程序,当访问路径为/index时,会返回"Hello, world"。应用程序监听在8888端口上,并通过tornado.ioloop.IOLoop.instance().start()方法来启动运行。 除了快速入门示例,还可以通过引用中提供的链接来学习更多关于Python Tornado的项目实践。引用中的代码展示了一个更复杂的Tornado应用程序示例。该示例使用了自定义的模板路径和渲染页面的方式,将请求路由到MainHandler处理程序,并在访问路径为/index时渲染home/index.html页面。应用程序监听在80端口上,并通过tornado.ioloop.IOLoop.instance().start()方法来启动运行。 总而言之,Python Tornado是一个强大的异步框架,可以用于构建高性能的Web应用。通过学习快速入门示例和项目实践,可以更好地理解和使用Tornado框架。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Pythontornado](https://blog.csdn.net/banzhi8397/article/details/101392895)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [python tornado](https://download.csdn.net/download/yun12315000/10510234)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [python开发之Tornado](https://blog.csdn.net/Dr_BigJoe/article/details/105206923)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值