【问题标题】:displaying url link using jinja使用 jinja 显示 url 链接
【发布时间】:2012-06-11 07:10:21
【问题描述】:

您好,我正在使用带有 google app 引擎的 jinja2,并且想知道在 jinja 呈现页面后是否可以在浏览器中显示 url 链接。

例如,如果我的浏览器转到一个 URL,www.test.com/login,我的服务器脚本将接收 GET 请求并通过 jinja 将 login.html 发送回浏览器。但是,我的浏览器上的链接仍将仅显示 www.test.com/login 而不是 www.test.com/login/login.html

可以这样做吗?

【问题讨论】:

    标签: google-app-engine url browser jinja2


    【解决方案1】:

    您用于呈现的文件与您的处理程序处理的当前 url 路径之间没有任何联系。
    内容通过流传递,您可以将任何您想要的内容放入流中,它可以是从模板呈现的内容或您将写入流的任何数据。

    您可以编写一个处理程序,该处理程序将接收该模板名称作为参数并呈现它,这将为您提供带有模板文件名的 url。

    【讨论】:

      【解决方案2】:

      您的 URL 是通过请求处理程序和您的 app.yaml 文件处理的。因此,如果您将请求映射到 www.test.com/login.html,这与 www.test.com/login 上匹配的请求相匹配。

      所以你的问题真的与 Jinja 无关,而是你的请求处理程序。

      例如

      app.yaml

      application: your_app
      version: 1
      runtime: python27
      api_version: 1
      default_expiration: "1d"
      threadsafe: True
      
      - url: /login.html
        static_files: static/html/login.html
        upload: static/html/login.html
        secure: never
      
      - url: /login
        script: main.app
      

      main.py

      import webapp2
      from controllers.LoginHandler import LoginHandler
      
      app = webapp2.WSGIApplication([
          webapp2.Route(r'/login', LoginHandler)
      ], debug=True)
      

      在上面的例子中,我展示了 2 条不同的路线。 /login.html 的一个静态路由和 /login 的第二个生成路由。如果您不想要 .html 则不要匹配该路线。

      关于匹配的说明,搜索引擎对 http 和 https 的处理方式不同,因此最好为您的路线使用 secure: never/always/optional,以确保它的书签相同。尾随 / 和 .html 也不同于裸路由。出于搜索索引的原因强制执行您的路线非常有用。

      【讨论】:

        猜你喜欢
        • 2021-01-04
        • 1970-01-01
        • 2017-05-03
        • 2012-11-17
        • 1970-01-01
        • 2018-04-04
        • 1970-01-01
        • 2020-03-03
        • 1970-01-01
        相关资源
        最近更新 更多