سؤال

دعونا نقول لدي بعض التعليمات البرمجية (باستخدام 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 وأنا أرى أسماء.الاسم:مارك.

يمكن للشخص أن يفسر ما الذي يحدث هنا ؟

هل كانت مفيدة؟

المحلول

على مؤشر طريقة استثناء جزئية مطابقة قواعد.يمكنك استخدام الافتراضي الطريقة بدلا من ذلك ، أو في هذا المثال بالذات جعل أسماء الطريقة نفسها.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top