CherryPy - ToolBox
Trong CherryPy, các công cụ tích hợp cung cấp một giao diện duy nhất để gọi thư viện CherryPy. Các công cụ được xác định trong CherryPy có thể được triển khai theo những cách sau:
- Từ cài đặt cấu hình
- Là một trình trang trí Python hoặc thông qua thuộc tính _cp_config đặc biệt của trình xử lý trang
- Là một Python có thể gọi có thể được áp dụng từ bên trong bất kỳ hàm nào
Công cụ xác thực cơ bản
Mục đích của công cụ này là cung cấp xác thực cơ bản cho ứng dụng được thiết kế trong ứng dụng.
Tranh luận
Công cụ này sử dụng các đối số sau:
Tên | Mặc định | Sự miêu tả |
---|---|---|
cảnh giới | N / A | Chuỗi xác định giá trị cảnh giới. |
người dùng | N / A | Từ điển của biểu mẫu - tên người dùng: mật khẩu hoặc một hàm có thể gọi trong Python trả về một từ điển như vậy. |
mã hóa | không ai | Python có thể gọi được sử dụng để mã hóa mật khẩu do máy khách trả về và so sánh nó với mật khẩu đã mã hóa được cung cấp trong từ điển người dùng. |
Thí dụ
Hãy để chúng tôi lấy một ví dụ để hiểu cách nó hoạt động -
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)
Các get_usershàm trả về một từ điển được mã hóa cứng nhưng cũng tìm nạp các giá trị từ cơ sở dữ liệu hoặc bất kỳ nơi nào khác. Quản trị viên lớp bao gồm chức năng này sử dụng công cụ xác thực tích hợp sẵn của CherryPy. Xác thực mã hóa mật khẩu và Id người dùng.
Công cụ xác thực cơ bản không thực sự an toàn, vì mật khẩu có thể bị mã hóa và giải mã bởi kẻ xâm nhập.
Công cụ bộ nhớ đệm
Mục đích của công cụ này là cung cấp bộ nhớ đệm của nội dung được tạo CherryPy.
Tranh luận
Công cụ này sử dụng các đối số sau:
Tên | Mặc định | Sự miêu tả |
---|---|---|
không hợp lệ | ("ĐĂNG", "ĐẶT", "XÓA") | Hàng loạt chuỗi phương thức HTTP không được lưu vào bộ nhớ đệm. Các phương thức này cũng sẽ làm mất hiệu lực (xóa) bất kỳ bản sao được lưu trong bộ đệm nào của tài nguyên. |
cache_Class | MemoryCache | Đối tượng lớp được sử dụng để lưu vào bộ nhớ đệm |
Công cụ giải mã
Mục đích của công cụ này là giải mã các tham số yêu cầu đến.
Tranh luận
Công cụ này sử dụng các đối số sau:
Tên | Mặc định | Sự miêu tả |
---|---|---|
mã hóa | không ai | Nó tìm kiếm tiêu đề loại nội dung |
Mã_chính_định | "UTF-8" | Mã hóa mặc định được sử dụng khi không có hoặc không tìm thấy. |
Thí dụ
Hãy để chúng tôi lấy một ví dụ để hiểu cách nó hoạt động -
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(), '/')
Đoạn mã trên lấy một chuỗi từ người dùng và nó sẽ chuyển hướng người dùng đến trang "hello.html" nơi nó sẽ được hiển thị là "Xin chào" với tên đã cho.
Đầu ra của đoạn mã trên như sau:
hello.html