CherryPy - กล่องเครื่องมือ

ภายใน CherryPy เครื่องมือในตัวมีอินเทอร์เฟซเดียวเพื่อเรียกไลบรารี CherryPy เครื่องมือที่กำหนดไว้ใน CherryPy สามารถใช้งานได้ด้วยวิธีต่อไปนี้ -

  • จากการตั้งค่าการกำหนดค่า
  • ในฐานะมัณฑนากร Python หรือผ่านแอตทริบิวต์ _cp_config พิเศษของตัวจัดการเพจ
  • ในฐานะที่เป็น Python callable ที่สามารถใช้ได้จากภายในฟังก์ชันใด ๆ

เครื่องมือตรวจสอบความถูกต้องพื้นฐาน

วัตถุประสงค์ของเครื่องมือนี้คือเพื่อให้การรับรองความถูกต้องพื้นฐานกับแอปพลิเคชันที่ออกแบบในแอปพลิเคชัน

อาร์กิวเมนต์

เครื่องมือนี้ใช้อาร์กิวเมนต์ต่อไปนี้ -

ชื่อ ค่าเริ่มต้น คำอธิบาย
ดินแดน ไม่มี สตริงกำหนดค่าขอบเขต
ผู้ใช้ ไม่มี พจนานุกรมของรูปแบบ - ชื่อผู้ใช้: รหัสผ่านหรือฟังก์ชันที่เรียกได้ของ Python ที่ส่งคืนพจนานุกรมดังกล่าว
เข้ารหัส ไม่มี 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ฟังก์ชันส่งคืนพจนานุกรมแบบฮาร์ดโค้ด แต่ยังดึงค่าจากฐานข้อมูลหรือที่อื่น ๆ ผู้ดูแลชั้นเรียนมีฟังก์ชั่นนี้ซึ่งใช้ประโยชน์จากเครื่องมือในตัวการตรวจสอบสิทธิ์ของ CherryPy การพิสูจน์ตัวตนเข้ารหัสรหัสผ่านและรหัสผู้ใช้

เครื่องมือตรวจสอบสิทธิ์พื้นฐานไม่ปลอดภัยจริง ๆ เนื่องจากผู้บุกรุกสามารถเข้ารหัสและถอดรหัสรหัสผ่านได้

เครื่องมือแคช

จุดประสงค์ของเครื่องมือนี้คือเพื่อจัดเตรียมแคชหน่วยความจำของเนื้อหาที่สร้างโดย CherryPy

อาร์กิวเมนต์

เครื่องมือนี้ใช้อาร์กิวเมนต์ต่อไปนี้ -

ชื่อ ค่าเริ่มต้น คำอธิบาย
invalid_methods ("POST", "PUT", "DELETE") จำนวนสตริงของวิธี HTTP ที่จะไม่ถูกแคช วิธีการเหล่านี้จะทำให้ (ลบ) สำเนาของทรัพยากรที่แคชไว้ไม่ถูกต้อง
cache_Class MemoryCache คลาสอ็อบเจ็กต์ที่จะใช้สำหรับการแคช

เครื่องมือถอดรหัส

วัตถุประสงค์ของเครื่องมือนี้คือการถอดรหัสพารามิเตอร์คำขอขาเข้า

อาร์กิวเมนต์

เครื่องมือนี้ใช้อาร์กิวเมนต์ต่อไปนี้ -

ชื่อ ค่าเริ่มต้น คำอธิบาย
การเข้ารหัส ไม่มี ค้นหาส่วนหัวประเภทเนื้อหา
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.html