我想简化/减少我的代码,所以我试着将具有重复参数的类的初始化放在它们自己的扩展类中。这是一个基于金字塔和檐口的restapi。你知道吗
当我总是在初始化时添加相同的头时,如何初始化pyramid.httpexceptions.HTTPUnauthorized?这也适用于其他HTTP响应,在这些响应中,我重复初始化它们,而不更改它们的参数。你知道吗
目前,我已经提出了这个扩展类:
class _401(HTTPUnauthorized):
def basic_jwt_header(self):
self.headers.add('WWW-Authenticate','JWT')
self.headers.add('WWW-Authenticate', 'Basic realm="Please log in"')
return self
def jwt_header(self):
self.headers.add('WWW-Authenticate','JWT')
return self
我在这样的视图中使用:
@forbidden_view_config()
def authenticate(request):
response = _401()
return _401.basic_jwt_header(response)
但感觉和看起来都不对劲。有更好更干净的方法吗?你知道吗
由于在实例化
_401
实例后使用的是两种不同的方法,因此最好使用类级工厂方法,这样可以创建实例并设置所需的头:现在不需要创建
__init__
,也不需要调用super()
什么的。我们使用cls
而不是显式的_401
类来支持_401
的任何未来子类。你知道吗在类上创建
__init__
方法:相关问题 更多 >
编程相关推荐