تساعدني على فهم أفضل CherryPy PageHandlers
-
21-08-2019 - |
سؤال
دعونا نقول لدي بعض التعليمات البرمجية (باستخدام CherryPy) التي تبدو مثل هذا:
import cherrypy
class Names:
def index(self, name=None):
return "Names.index: " + str(name)
index.exposed = True
class Root:
def index(self):
return "This is the root"
index.exposed = True
if __name__ == "__main__":
root = Root()
root.names = Names()
cherrypy.tree.mount(root, '/')
cherrypy.engine.start()
cherrypy.engine.block()
إذا كنت ضرب url http://localhost:8080/names/, أرى أسماء.مؤشر:لا شيء, التي على ما يرام.وهذا يعني أن أسماء() الدرجة يسمى.
ولكن إذا ذهبت إلى http://localhost:8080/names/mark, احصل على الخطأ 404 بدلا من أسماء.مؤشر:مارك كنت أتوقع.
هذا يخلط لي لأنه وفقا PageHandler الوثائق:
عند معالجة الطلب ، URI تنقسم إلى مكوناته و كل واحد يقابل في النظام ضد العقد في الشجرة.أي زائدة مكونات "المسار الظاهري" المكونات مرت كما الموضعية الحجج.
الآن دعونا نقول تغيير الأسماء() class أن تبدو مثل هذا:
class Names:
def index(self, name=None):
return "Names.index: " + str(name)
index.exposed = True
def name(self, name=None):
return "Names.name: " + str(name)
name.exposed = True
الآن أنا يمكن أن تذهب إلى http://localhost:8080/names/name/mark وأنا أرى أسماء.الاسم:مارك.
يمكن للشخص أن يفسر ما الذي يحدث هنا ؟
المحلول
على مؤشر طريقة استثناء جزئية مطابقة قواعد.يمكنك استخدام الافتراضي الطريقة بدلا من ذلك ، أو في هذا المثال بالذات جعل أسماء الطريقة نفسها.