嗨,我正在使用 jinja2 和谷歌应用程序引擎,想知道在 jinja 呈现页面后是否可以在浏览器中显示 url 链接。
例如,如果我的浏览器转到一个 URL,www.test.com/login,我的服务器脚本将接收 GET 请求并通过 jinja 将 login.html 发送回浏览器。但是,我的浏览器上的链接仍将仅显示 www.test.com/login 而不是 www.test.com/login/login.html
是否有可能做到这一点?
嗨,我正在使用 jinja2 和谷歌应用程序引擎,想知道在 jinja 呈现页面后是否可以在浏览器中显示 url 链接。
例如,如果我的浏览器转到一个 URL,www.test.com/login,我的服务器脚本将接收 GET 请求并通过 jinja 将 login.html 发送回浏览器。但是,我的浏览器上的链接仍将仅显示 www.test.com/login 而不是 www.test.com/login/login.html
是否有可能做到这一点?
您用于呈现的文件与您的处理程序处理的当前 url 路径之间没有任何联系。
内容通过流传递,您可以将任何您想要的内容放入流中,它可以是从模板呈现的内容或您将写入流的任何数据。
您可以编写一个处理程序,该处理程序将接收该模板名称作为参数并呈现它,这将为您提供带有模板文件名的 url。
您的 URL 通过请求处理程序和您的 app.yaml 文件进行处理。因此,如果您将请求映射到 www.test.com/login.html,这与在 www.test.com/login 匹配的请求相匹配。
因此,您的问题实际上与 Jinja 无关,而是与您的请求处理程序有关。
例如
应用程序.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
主文件
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 也不同于裸路由。出于搜索索引的原因强制执行您的路线非常有用。