在另一个文件中调用python函数

Calling python function in another file

本问题已经有最佳答案,请猛点这里访问。

我想问一下:

  • 在下面的代码段中,@login_required的目的是什么?


    (Yes,"@login_required" is defined in another .py file)

  • 这段代码实际上是如何工作的?这是否意味着每当使用类TaskCreateHandler时,将调用函数login_required

  • 如果我们在def post(self)中写入@login_required,会怎么样?

  • 谢谢。

    1
    2
    3
    class TaskCreateHandler(BaseHandler):
    @login_required
    def post(self):


    我想您使用flask(登录flask)或类似的方法。

    1)要求@login_的目的是确保只有会话有效的用户才能访问资源。如果您没有有效的会话容器,登录将返回401(需要授权),并且您无法访问该资源。请参见https://flask login.readthedocs.io/en/latest/登录示例。

    2)如Mohamed所述,所需的登录名是一个修饰器。它将包装您的函数(post),这意味着每当有人调用taskCreateHandler.post时,首先调用login_required,它执行一些操作(例如检查有效会话),然后可能调用您的函数。一旦函数返回,控件将被处理回@login required,这可能只是从post返回结果。请参见https://wiki.python.org/moin/pythondecorators。

    3)不起作用,因为没有任何装饰…


    你这里有个装修工。语法完全等同于:

    1
    2
    def post: #code
    post = login_required(post)

    python修饰器只是一个常规函数。它接受另一个函数作为参数,并用它来做…真的吗?您可以定义:

    def add12(func):返回1+2

    把它用作装饰。然后,如果您通过在post上面添加@add12来修饰post,那么对post()的任何调用都将返回3,而不管您向它传递了什么。如果不清楚原因,请再次查看上面的等效语法片段。

    如果你把它写在def里面,它在这里不会有太大的用处。我不能百分之百地确定如何对待它;我怀疑它会抛出语法错误。


    我认为这是一个修饰符,可以在调用方法之前验证用户是否登录。有关更多信息,请查看这篇漂亮的博客文章。

    高温高压