工具箱(ToolBox)
优质
小牛编辑
127浏览
2023-12-01
在CherryPy中,内置工具提供单个界面来调用CherryPy库。 CherryPy中定义的工具可以通过以下方式实现 -
- 从配置设置
- 作为Python装饰器或通过页面处理程序的特殊_cp_config属性
- 作为Python可调用,可以从任何函数中应用
基本认证工具
此工具的目的是为应用程序中设计的应用程序提供基本身份验证。
参数 (Arguments)
此工具使用以下参数 -
名称 | 默认 | 描述 |
---|---|---|
realm | N/A | 定义领域值的字符串。 |
users | N/A | 表单的字典 - 用户名:密码或返回此类字典的Python可调用函数。 |
encrypt | None | Python callable用于加密客户端返回的密码,并将其与用户词典中提供的加密密码进行比较。 |
例子 (Example)
让我们举一个例子来了解它是如何工作的 -
import sha
import cherrypy
class Root:
@cherrypy.expose
def index(self):
return """
<html>
<head></head>
<body>
<a href = "admin">Admin </a>
</body>
</html>
"""
class Admin:
@cherrypy.expose
def index(self):
return "This is a private area"
if __name__ == '__main__':
def get_users():
# 'test': 'test'
return {'test': 'b110ba61c4c0873d3101e10871082fbbfd3'}
def encrypt_pwd(token):
return sha.new(token).hexdigest()
conf = {'/admin': {'tools.basic_auth.on': True,
tools.basic_auth.realm': 'Website name',
'tools.basic_auth.users': get_users,
'tools.basic_auth.encrypt': encrypt_pwd}}
root = Root()
root.admin = Admin()
cherrypy.quickstart(root, '/', config=conf)
get_users函数返回一个硬编码字典,但也从数据库或其他任何地方获取值。 类admin包含此函数,该函数使用CherryPy的身份验证内置工具。 身份验证加密密码和用户ID。
基本身份验证工具并不十分安全,因为密码可以由入侵者编码和解码。
缓存工具
此工具的目的是提供CherryPy生成内容的内存缓存。
参数 (Arguments)
此工具使用以下参数 -
名称 | 默认 | 描述 |
---|---|---|
invalid_methods | ("POST", "PUT", "DELETE") | 不缓存HTTP方法字符串的元组。 这些方法还将使资源的任何缓存副本无效(删除)。 |
cache_Class | MemoryCache | 用于缓存的类对象 |
解码工具
此工具的目的是解码传入的请求参数。
参数 (Arguments)
此工具使用以下参数 -
名称 | 默认 | 描述 |
---|---|---|
encoding | None | 它查找内容类型标头 |
Default_encoding | "UTF-8" | 未提供或未找到时使用的默认编码。 |
例子 (Example)
让我们举一个例子来了解它是如何工作的 -
import cherrypy
from cherrypy import tools
class Root:
@cherrypy.expose
def index(self):
return """
<html>
<head></head>
<body>
<form action = "hello.html" method = "post">
<input type = "text" name = "name" value = "" />
<input type = ”submit” name = "submit"/>
</form>
</body>
</html>
"""
@cherrypy.expose
@tools.decode(encoding='ISO-88510-1')
def hello(self, name):
return "Hello %s" % (name, )
if __name__ == '__main__':
cherrypy.quickstart(Root(), '/')
上面的代码从用户获取一个字符串,它将用户重定向到“hello.html”页面,在该页面中,它将显示为具有给定名称的“Hello”。
上述代码的输出如下 -
hello.html