Django middware فقط "Process_response" عندما تفوت SLASH
-
22-09-2019 - |
سؤال
لقد كتبت برامج 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.
إذا قام طلب الوسيطة بإرجاع استجابة ، كما هو الحال في هذه الحالة ، لا تتم معالجة فئات الأوساط الأخرى ، لذلك لا يتم تسجيل "البدء". ومع ذلك ، فصول الوسيطة الاستجابة دائماً تمت معالجتها ، لذلك يتم تسجيل "نهاية".
لا تنتمي إلى StackOverflow