Python 瓶子 - "redirect" 和 "return template" 之间的区别

Python Bottle - Difference between "redirect" and "return template"

我有两个关于 Bottle 的问题:

1)有什么区别:

redirect('/login')return template('login')

两者不会让用户继续访问同一个 /login 页面吗?

2) 我可以像 return 那样将参数传递给 redirect 吗?

例如:

这项工作是否有效:redirect('/login', userName="foo") 就像我们在这种情况下所做的那样:

return template('login', userName="foo")

1) What is the difference between:

redirect('/login') and return template('login')

来自bottle documentation for redirect:

To redirect a client to a different URL, you can send a 303 See Other response with the Location header set to the new URL. redirect() does that for you

redirect() 方法将向用户发送 303 响应,然后用户将向您的服务器发送另一个请求“/登录”页面。如果您使用 template() 方法,您将把网页直接返回给用户。

2) Can I pass arguments to redirect as I do in case of return?

redirect() 不接受查询变量,例如您传递给 template() 的变量。如果要使用这些变量,则需要在 url 上明确设置它们。例如。要将 url '/login'userName="foo" 一起使用,您需要调用 redirect('/login?userName="foo")

Edit 如果您不想在 url 中存储所有变量,您应该尝试在呈现页面时获取这些值。 例如在没有变量的情况下调用 redirect('/login'),并使呈现“/login”的方法负责使用正确的变量调用 template()