在CherryPy中,内置工具提供了一个单独的界面来调用CherryPy库. CherryPy中定义的工具可以通过以下方式实现 :
从配置设置中
作为Python装饰器或通过页面处理程序的特殊_cp_config属性
作为可在任何函数中应用的Python可调用
此工具的目的是为应用程序中设计的应用程序提供基本身份验证.
此工具使用以下参数 :
名称 | 默认 | 描述 |
---|---|---|
realm | N/A | 定义领域值的字符串. |
users | N/A | 形式字典 : username:password或返回这样字典的Python可调用函数. |
encrypt | 无 | 用于加密密码的Python callable客户端返回并将其与用户词典中提供的加密密码进行比较. |
让我们举一个例子来了解它的工作原理和减号;
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生成内容的内存缓存.
此工具使用以下参数 :
名称 | 默认 | 描述 |
---|---|---|
invalid_methods | ("POST","PUT","DELETE") | 不缓存HTTP方法字符串的元组.这些方法也将使资源的任何缓存副本无效(删除). |
cache_Class | MemoryCache | 用于缓存的类对象 |
此工具的目的是解码传入的请求参数.
此工具使用以下参数 :
名称 | 默认 | 描述 |
---|---|---|
encoding | 无 | 它查找内容类型标题 |
Default_encoding | "UTF-8" | 没有时使用的默认编码提供或找到. |
让我们举一个例子来理解如何工作 : 去;
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