Calling python function in another file
我想问一下:
在下面的代码段中,
(Yes,"@login_required" is defined in another .py file)
这段代码实际上是如何工作的?这是否意味着每当使用类
如果我们在def post(self)中写入
谢谢。
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里面,它在这里不会有太大的用处。我不能百分之百地确定如何对待它;我怀疑它会抛出语法错误。
我认为这是一个修饰符,可以在调用方法之前验证用户是否登录。有关更多信息,请查看这篇漂亮的博客文章。
高温高压