使用jinja显示网址链接

时间:2012-06-11 07:10:22

标签: google-app-engine url browser jinja2

您好我正在使用jinja2与谷歌应用程序引擎,并想知道是否有可能在jinja呈现页面后在浏览器中显示URL链接。

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

是否可以这样做?

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

您的网址是通过请求处理程序和您的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也不同于裸路径。为搜索索引原因强制执行路由非常有用。