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