草庐IT

Decorator

全部标签

Python - 在装饰器中获取原始函数参数

我正在尝试为WSGI+Werkzeug应用程序中的View编写“login_required”装饰器。为了做到这一点,我需要进入用户的session,它可以通过传递给View方法的Request对象访问。不过,我不知道如何在装饰器中获取Request实例。我查看了PEP318,特别是第四个示例,但我不太明白。这是我正在尝试的:deflogin_required(*args,**kw):defgoto_login(**kw):returnredirect(url_for('login'))defdecorate(f):#args[0]shouldberequestargs[0].clie

Python - 在装饰器中获取原始函数参数

我正在尝试为WSGI+Werkzeug应用程序中的View编写“login_required”装饰器。为了做到这一点,我需要进入用户的session,它可以通过传递给View方法的Request对象访问。不过,我不知道如何在装饰器中获取Request实例。我查看了PEP318,特别是第四个示例,但我不太明白。这是我正在尝试的:deflogin_required(*args,**kw):defgoto_login(**kw):returnredirect(url_for('login'))defdecorate(f):#args[0]shouldberequestargs[0].clie

python - 在 Python 中进行自动属性分配的最佳方法是什么,这是一个好主意吗?

而不是每次定义类时都编写这样的代码:classFoo(object):def__init__(self,a,b,c,d,e,f,g):self.a=aself.b=bself.c=cself.d=dself.e=eself.f=fself.g=g我可以使用thisrecipeforautomaticattributeassignment.classFoo(object):@autoassigndef__init__(self,a,b,c,d,e,f,g):pass两个问题:是否存在与此快捷方式相关的缺点或陷阱?有没有更好的方法来实现类似的便利? 最佳答案

python - 在 Python 中进行自动属性分配的最佳方法是什么,这是一个好主意吗?

而不是每次定义类时都编写这样的代码:classFoo(object):def__init__(self,a,b,c,d,e,f,g):self.a=aself.b=bself.c=cself.d=dself.e=eself.f=fself.g=g我可以使用thisrecipeforautomaticattributeassignment.classFoo(object):@autoassigndef__init__(self,a,b,c,d,e,f,g):pass两个问题:是否存在与此快捷方式相关的缺点或陷阱?有没有更好的方法来实现类似的便利? 最佳答案

python - 如何从 Flask 装饰器将变量发送到 Jinja 模板?

我的蓝图flask应用程序周围的许多路线都需要将“侧边栏数据”发送到jinja。我正在寻找最有效的方法来做到这一点。他们必须比将我的“generate_sidebar_data()”函数导入每个蓝图更好,反复说:var1,var2,var3=generate_sidebar_data()然后使用“render_template”发送它们:returnrender_template('template.html',var1=var1,var2=var2,var3=var3)我想要的是一个装饰器,我可以将它放在与上述相同的路由中(运行函数并将变量发送到jinja),但我不知道这是否可能。如

python - 如何从 Flask 装饰器将变量发送到 Jinja 模板?

我的蓝图flask应用程序周围的许多路线都需要将“侧边栏数据”发送到jinja。我正在寻找最有效的方法来做到这一点。他们必须比将我的“generate_sidebar_data()”函数导入每个蓝图更好,反复说:var1,var2,var3=generate_sidebar_data()然后使用“render_template”发送它们:returnrender_template('template.html',var1=var1,var2=var2,var3=var3)我想要的是一个装饰器,我可以将它放在与上述相同的路由中(运行函数并将变量发送到jinja),但我不知道这是否可能。如

Python 元类与类装饰器

Python元类和类装饰器之间的主要区别是什么?有什么我可以用一个做而另一个不能做的事情吗? 最佳答案 装饰器要简单得多,也受到更多限制——因此,只要可以使用元类或类装饰器来实现所需的效果,就应该首选装饰器。任何你可以用类装饰器做的事情,你当然可以用一个自定义元类来做(只需应用“装饰器函数”的功能,即接受一个类对象并修改它的那个,在元类的__new__或__init__使类成为对象!-)。您可以在自定义元类中做很多事情,但在装饰器中却不能(当然,除非装饰器在内部生成并应用自定义元类,但那是作弊;-)...即使这样,在Python中也

Python 元类与类装饰器

Python元类和类装饰器之间的主要区别是什么?有什么我可以用一个做而另一个不能做的事情吗? 最佳答案 装饰器要简单得多,也受到更多限制——因此,只要可以使用元类或类装饰器来实现所需的效果,就应该首选装饰器。任何你可以用类装饰器做的事情,你当然可以用一个自定义元类来做(只需应用“装饰器函数”的功能,即接受一个类对象并修改它的那个,在元类的__new__或__init__使类成为对象!-)。您可以在自定义元类中做很多事情,但在装饰器中却不能(当然,除非装饰器在内部生成并应用自定义元类,但那是作弊;-)...即使这样,在Python中也

python - Python Django 的多线程

一些功能应该在网络服务器上异步运行。发送电子邮件或数据后处理是典型的用例。编写装饰器函数以异步运行函数的最佳(或最Pythonic)方法是什么?我的设置很常见:Python、Django、Gunicorn或Waitress、AWSEC2标准Linux例如,这是一个开始:fromthreadingimportThreaddefpostpone(function):defdecorator(*args,**kwargs):t=Thread(target=function,args=args,kwargs=kwargs)t.daemon=Truet.start()returndecorato

python - Python Django 的多线程

一些功能应该在网络服务器上异步运行。发送电子邮件或数据后处理是典型的用例。编写装饰器函数以异步运行函数的最佳(或最Pythonic)方法是什么?我的设置很常见:Python、Django、Gunicorn或Waitress、AWSEC2标准Linux例如,这是一个开始:fromthreadingimportThreaddefpostpone(function):defdecorator(*args,**kwargs):t=Thread(target=function,args=args,kwargs=kwargs)t.daemon=Truet.start()returndecorato