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