【问题标题】: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 也不同于裸路由。出于搜索索引的原因强制执行您的路线非常有用。