您好我正在使用jinja2与谷歌应用程序引擎,并想知道是否有可能在jinja呈现页面后在浏览器中显示URL链接。
例如,如果我的浏览器转到网址www.test.com/login,我的服务器脚本将收到GET请求并通过jinja将login.html发送回浏览器。但是,我浏览器上的链接仍然只显示www.test.com/login而不是www.test.com/login/login.html
是否可以这样做?
答案 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也不同于裸路径。为搜索索引原因强制执行路由非常有用。