التعامل مع المعلمات تحكم تحكم في عداد المفقودين في turbogears 2

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

  •  21-08-2019
  •  | 
  •  

سؤال

لنفترض لدي طريقة تحكم مثل ذلك:

@expose()
def search(self, title):
    return dict()

موقع http: // / بحث / سوف يسبب استثناء أن يلقى: TypeError: البحث ( ) يأخذ بالضبط 2 الحجج (1 معين).

والخطأ هو منطقي، لكنني تفضل التعامل معها أكثر بأمان. وباستخدام وسائط * أو ** kwargs السبيل الوحيد لتجنب خطأ أنا لا يبدو حتى تكون قادرة على التقاط؟

وتحرير: اعتقد انني يمكن دائما استخدام عنوان = بلا، ولكن أكثر من اللازم من التي يمكن أن تحصل القبيح ...

وعلى أي حال، هل هناك طريقة للقبض على استثناء و / أو معالجة عدم التطابق حجة أكثر بأمان؟

والشكر

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

المحلول

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

وقد ترغب في النظر في إعدادات منها في development.ini الخاص بك:

# WARNING: *THE LINE BELOW MUST BE UNCOMMENTED ON A PRODUCTION ENVIRONMENT*
# Debug mode will enable the interactive debugging tool, allowing ANYONE to
# execute malicious code after an exception is raised.
set debug = false

وآمل أن كان هذا سؤالك.

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

إذا كنت ترغب في تغيير عرض هذه الأخطاء الرجوع إلى /controllers/error.py

وهذا الأمل ساعد،

وتوم

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