سؤال

لقد كتبت برامج middware مثل هذا:

class LogMiddleware( object ):

    def process_request( self, request ):
        logging.debug("start")

    def process_response( self, request, response ):
        logging.debug("end")
        return response

وأضعه في الجزء السفلي من الوسيطة _classes

معظم الوقت يعمل بشكل جيد.

وعندما أختبر مع عنوان URL /المسؤول دون وجود " /" ولم أستطع رؤية تسجيل "النهاية" فقط ، لماذا؟

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

المحلول

ال توثيق يشرح هذا.

تتم معالجة فصول الوسيطة بالترتيب الذي تظهر. فئة CommonMiddleware أعلى من فئة logmiddleware الخاصة بك ، لذلك تتم معالجتها أولاً. إنه يؤدي إعادة توجيه لأن عنوان URL الخاص بك لا ينتهي بقطع مائل ، لذلك يعيد httpresponseredirect.

إذا قام طلب الوسيطة بإرجاع استجابة ، كما هو الحال في هذه الحالة ، لا تتم معالجة فئات الأوساط الأخرى ، لذلك لا يتم تسجيل "البدء". ومع ذلك ، فصول الوسيطة الاستجابة دائماً تمت معالجتها ، لذلك يتم تسجيل "نهاية".

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