【问题标题】:Can you return a return statement in Python?你能在 Python 中返回一个 return 语句吗?
【发布时间】:2019-08-16 03:36:47
【问题描述】:

我正在开发一个 Web 应用程序,并且正在创建一个登录和身份验证表单。如果您已登录,某些页面应该是禁止访问的(例如登录表单),我正在尝试创建一种系统的方式来执行此操作。

为此,我试图创建一个返回 return 语句的函数。请参阅下面的代码。

def login():
    redirect_to_home_if_logged_in()
    # rest of login page
def register():
    redirect_to_home_if_logged_in()
    # rest of register page
def redirect_to_home_if_logged_in():
    if current_user.is_authenticated:
        print("squa")
        return return redirect(url_for('home'))

我希望该函数会返回一个 return 语句,以便登录和注册页面会返回一个重定向。相反,我得到了一个错误。

【问题讨论】:

  • 对于大多数 web 框架,有一个标准的方式来做这样的事情,你应该参考他们的文档。除了 Web 开发人员,您似乎在描述的是 Python decorator
  • @Dair 我尝试使用装饰器,但我无法使用 redirect_to_home_if_logged_in 来装饰登录功能,因为那时我们不在请求范围内,而 current_user 是 NoneType

标签: python return


【解决方案1】:

不,您不能像这样返回 return 语句。

一种常见的安排是重构代码,以便调用者关心您返回的内容,并将其转发给调用者。

另一种方法是通过回调。

正如@Dair 在评论中所指出的那样,您实际尝试完成的工作可能已经被您可能已经使用的任何 Web 框架完全不同的机制所涵盖。 Here's Flaskhere's Django.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-06
    • 2019-07-31
    • 2013-02-22
    • 2022-12-09
    • 1970-01-01
    相关资源
    最近更新 更多