【问题标题】:Understanding webapp2 routes了解 webapp2 路由
【发布时间】:2018-01-12 09:01:20
【问题描述】:

假设我有以下 webapp2 路线。

webapp2.Route('/api/users/register/verify/<user_id:\d+>/<signup_token:.+>', users.VerificationHandler, name='verification')  

我知道第一部分是 URL,然后是请求处理程序的名称,但我不明白 name='verification' 的目的。有人可以解释为什么在 webapp2 路由中使用名称吗?

此外,uri_for() 函数的用途是什么?我们为什么要使用它?

【问题讨论】:

    标签: python google-app-engine web-applications webapp2


    【解决方案1】:

    以编程方式,webapp2 是类,Route 是在类中定义的函数。

    webapp2 只不过是一种扩展 webapp 模型以提供附加功能的路由机制:

    • URI 构建:可以在需要时构建注册的路由,避免在应用代码和模板中硬编码 URI。

    • 关键字参数: 处理程序可以从匹配的 URI 接收关键字参数。

    • 嵌套路由: 可以扩展路由以匹配请求路径之外的更多内容。我们将在下面看到一个也可以匹配的路由类 域和子域。

    例如: webapp2.Route('/api/users/register/verify/&lt;user_id:\d+&gt;/&lt;signup_token:.+&gt;', handler=HomeHandler, name='verification')

    从你的例子中,name='verification'

    它是您的网址的别名...

    在你的例子中,

    您的网址是:'/api/users/register/verify/&lt;user_id:\d+&gt;/&lt;signup_token:.+&gt;' 您无法正确记住它,因此名称将帮助您将其命名为令人难忘的verification

    所以你的网址,/api/users/register/verify/&lt;user_id:\d+&gt;/&lt;signup_token:.+&gt; = verification

    别名将在运行时转换为原始网址

    接下来,uri_for()

    正如我所说,你为你的大 URL 分配了别名。所以你知道它的最短别名。如果你想从别名中检索 URL,你可以使用这个函数,

    print uri_for('verification') 
    

    会给你,/api/users/register/verify/&lt;user_id:\d+&gt;/&lt;signup_token:.+&gt;

    【讨论】:

    • 那么我们可以说“名称”用于使长 URL 变短吗?只是为了方便开发者?
    • 是的.. 它不会生成 url 。它就像别名...它不会显示在地址栏中..它将在运行时翻译..短网址将在后端分配为长网址..python只知道..一旦您执行它就会翻译
    • 感谢这个解释清楚的答案!
    • name 变量不仅仅用于缩短 url。如果您的处理程序中有许多重定向,并且模板中有指向 url 的链接,然后该 url 发生了变化,那么您将有损坏的重定向和链接,您需要修复它们。如果这些重定向和链接指向 Route 的 name 而不是 Route 的 url,那么当您更改 Route 的 url 时,您的重定向和链接不会中断。
    猜你喜欢
    • 2012-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多