TurboGears - ลำดับชั้นของ URL
บางครั้งเว็บแอปพลิเคชันอาจต้องการโครงสร้าง URL ที่มีมากกว่าหนึ่งระดับ TurboGears สามารถสำรวจลำดับชั้นของวัตถุเพื่อค้นหาวิธีการที่เหมาะสมที่สามารถจัดการคำขอของคุณได้
โปรเจ็กต์ 'เริ่มต้นอย่างรวดเร็ว' พร้อมกระปุกเกียร์มีคลาส BaseController ในโฟลเดอร์ lib ของโปรเจ็กต์ มีให้ในชื่อ 'Hello / hello / lib / base.py' ทำหน้าที่เป็นคลาสพื้นฐานสำหรับคอนโทรลเลอร์ย่อยทั้งหมด ในการเพิ่มระดับย่อยของ URL ในแอปพลิเคชันให้ออกแบบคลาสย่อยที่เรียกว่า BlogController ที่มาจาก BaseController
BlogController นี้มีฟังก์ชั่นคอนโทรลเลอร์สองตัวคือ index () และ post () ทั้งสองแบบได้รับการออกแบบมาเพื่อแสดงเทมเพลตแต่ละแบบคือ blog.html และ post.html
Note - เทมเพลตเหล่านี้ใส่ไว้ในโฟลเดอร์ย่อย - เทมเพลต / บล็อก
class BlogController(BaseController):
@expose('hello.templates.blog.blog')
def index(self):
return {}
@expose('hello.templates.blog.post')
def post(self):
from datetime import date
now = date.today().strftime("%d-%m-%y")
return {'date':now}
ตอนนี้ประกาศออบเจ็กต์ของคลาสนี้ในคลาส RootController (ใน root.py) ดังนี้ -
class RootController(BaseController):
blog = BlogController()
ฟังก์ชันคอนโทรลเลอร์อื่น ๆ สำหรับ URL ระดับบนสุดจะอยู่ในคลาสนี้เหมือนก่อนหน้านี้
เมื่อ URL http://localhost:8080/blog/จะถูกจับคู่กับฟังก์ชันตัวควบคุม index () ภายในคลาส BlogController ในทำนองเดียวกันhttp://localhost:8080/blog/post จะเรียกใช้ฟังก์ชัน post ()
โค้ดสำหรับ blog.html และ post.html มีดังต่อไปนี้ -
Blog.html
<html>
<body>
<h2>My Blog</h2>
</body>
</html>
post.html
<html>
<body>
<h2>My new post dated $date</h2>
</body>
</html>
เมื่อ URL http://localhost:8080/blog/ ป้อนมันจะสร้างผลลัพธ์ต่อไปนี้ -
เมื่อ URL http://localhost:8080/blog/post ป้อนมันจะสร้างผลลัพธ์ต่อไปนี้ -