web2py: كيف يمكنني تنفيذ التعليمات البرمجية قبل استدعاء وحدات تحكم؟

StackOverflow https://stackoverflow.com/questions/1739737

سؤال

في web2py، هناك طريقة لجعل قطعة من رمز مشترك يتم تنفيذه قبل أن يتم دعا كافة وحدات تحكم؟

وعلى سبيل المثال، أريد أن أضيف بعض التعليمات البرمجية التي سيتم تسجيل المتكاملة العميل إلى سجل الطلبات لتمكين التحليل. أنا يمكن ببساطة جعل السطر الأول من كافة وحدات تحكم بلدي أن يكون شيء من هذا القبيل response = RequestBase(request) ولكن أنا فضولية لمعرفة ما إذا كان هذا هو المشكلة التي سبق حلها من خلال بعض الآليات الأخرى.

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

المحلول

هل يمكن ببساطة وضع قطعة الخاص بك من التعليمات البرمجية تسجيل في ملف تعريف نموذج، models/db.py، أو في وحدة التحكم controllers/default.py الخاصة بك مثل هذا:

with open("mylog.log", "at") as f:
    f.write(repr(request))

def index():
    # index controller definition

# ... rest of the code

وأو، إذا كنت بحاجة إلى وظائف أو الطبقات إلى تعريف:

# --------------------------
# Log part:
# --------------------------

def my_log(request):
    with open("mylog.log", "at") as f:
        f.write(repr(request))

my_log(request)

# --------------------------
# Controllers part:
# --------------------------

def index():
    # index controller definition

# ... rest of the code

وبطبيعة الحال، repr(request) ليس كيف تريد ذلك، ولكن تحصل على هذه الفكرة: من هناك يمكنك تسجيل أي معلومات تحب قبل أن يتم استدعاء وحدات التحكم (تعريفها فقط في هذه المرحلة)

والخادم يحافظ بالفعل سجل في الدليل الجذر، في httpserver.log.

نصائح أخرى

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

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