zoukankan      html  css  js  c++  java
  • webpy学习笔记——理解URL处理

    问题:如何为整个站点设计一套URL处理和调度的方案?

    解决方案:webpy的URL处理方案简单但是强大和灵活。在每个应用的顶部,你经常会看到一个在元组中定义的完整的URL调度方案。例如:

    urls = (
        "/tasks/?", "signin",
        "/tasks/list", "listing",
        "/tasks/post", "post",
        "/tasks/chgpass", "chgpass",
        "/tasks/act", "actions",
        "/tasks/logout", "logout",
        "/tasks/signup", "signup"
    )

    这个元组的格式是:url-pattern-path,handler-class 这种模式会重复定义更多的URL模式。如果你不理解URL模式和处理类之间的关系,请查看Hello World example或者Quick Start Tutorial在你

    阅读cookbook的其他部分之前。

    路径匹配 path matching

    你可以使用强大的正则表达式去设计更加灵活的URL模式。例如,/(test1|test2)会匹配/test1或/test2两者中任意一个。关键在于理解匹配发生在你的URL的路径上。

    例如,以下的URL:

    http://localhost/myapp/greetings/hello?name=Joe

    该URL的路径是/myapp/greetings/hello 。webpy会在内部添加一个 ^ 和 $ 到url模式,这样,/tasks/就不会去匹配/tasks/addnew 这样的模式。当匹配路径时,你不能使用这样的模式:/tasks/delete?name=(.+)作为?后面的部分被称为query(字串),所以不能被正确匹配到。关于URL更详细的描述,请参考web.ctx

    捕获参数 capture parameters

    你可以把在URL模式中捕获到参数用于你的处理类中:

    "/users/list/(.+)", "list_users"

    在list/之后被捕获到的数据块可以作为参数被用在GET或者POST中:

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

    你可以定义多个参数。还要注意,URL字串中的参数(即出现在?后面的那部分)可以在使用web.input()被获取到。

    在意在子应用中的情况 Note sub-application

    为了更好的处理更大的web应用,webpy还支持sub-application  当你在给子应用设计URL方案时,请牢记,路径(web.ctx.path)会让父路径被剥夺。例如,如果在主应用中,你定义一个URL模式/blog

    跳转到blog子应用,在你的blog子应用中所有的URL模式都会以 / 开始而不是 /blog 。查看 web.ctx 获取cookbook规则更多的细节。

  • 相关阅读:
    自定义vue必填验证指令
    福珑2日常存活策略
    树莓派系统安装和配置 WiringPi
    代码实现RabbitMQ死信队列的创建
    博客已经搬家
    浅谈PHP序列化与反序列化
    prometheus监控golang服务实践
    ETCD核心机制解析
    N1BOOK 记录
    利用Ubuntu虚拟机制作F2FS文件系统镜像
  • 原文地址:https://www.cnblogs.com/ggjjl1/p/4162009.html
Copyright © 2011-2022 走看看