اذهب إلى المحتوى

السؤال

نشر

بدأت في تعلم البرمجة بلغة Python ولاحقًا بدأت أتعلم أكثر حول جانغو Django. في البداية كان من الصعب النظر في الأخطاء واكتشاف الخطأ الذي فعلته. وبعد مرور بعض الوقت، أعتقد أنه أصبح لدي روتين في تصحيح أخطاء الكود الخاص بي خصوصًا في مشاريع جانغو Django. وأتسأل عما إذا كانت الطريقة التي كنت أفعل بها هذا غير فعالة ويمكن القيام بها بشكل أسرع. عادةً ما أتمكن من العثور على الأخطاء وتصحيحها في الكود الخاص بي، لكنني أتساءل عما إذا كان يجب أن أقوم بذلك بشكل أسرع؟

عادةً ما أستخدم فقط معلومات التصحيح التي يقدمها جانغو Django. عندما تنتهي الأمور كما اعتقدت، أجد أني قد قمت بعمل الكثير من الأخطاء النحوية في الكود، وألقي نظرة على المتغيرات والكود بشكل عام لمعرفة أين يقوم الكود بشيء آخر غير ما أريده، وأحدد أين توجد المشكلة بشكل عام.

لكن هل يمكن تحسين هذه الطريقة؟ هل هناك بعض الأدوات الجيدة أو طرق أفضل لتصحيح أخطاء جانغو Djangoالخاص بك بشكل عملي أكثر؟

Recommended Posts

  • 0
نشر

هناك العديد من الطرق للقيام بذلك ، ولكن الأكثر وضوحا هو ببساطة استخدام  Python debugger

فقط أضف السطر التالي إلى دالة view 

import pdb; pdb.set_trace()

#or

breakpoint()  #from Python3.7

وأيضاً إذا كنت تستخدم IDE مثل PyCharm سيوفر لك سهولة في تتبع الأخطاء في الكود 

  • 1
نشر

يمكنك معرفة ماحدث لل object عند وصوله لل template كالتالي:

@register.filter 
def pdb(element):
    import pdb; pdb.set_trace()
    return element

الآن ، داخل القالب يمكنك القيام ب {{template_var | pdb}} والدخول إلى جلسة pdb حيث يمكنك فحص عنصرك.
كما يمكنك استخدام PyCharm فهو يجعلك قادراً بصرياً على المرور عبر الكود الخاص بك ومعرفة ما يحدث (يشير لك لأماكن وجود أخطاء في الكود أثناء كتابته). أيضاً هناك epdb وهو إضافة أو توسيع ل Python Debugge :

import epdb; epdb.serve()

بمجرد تنفيذ هذا الكود، أفتح "Python interpreter" وأتصل ب serving instance. يمكنك تحليل جميع القيم والخطوات من خلال الكود باستخدام أوامر pdb مثل n ، s ، إلخ.

import epdb; epdb.connect()
(Epdb) request
<WSGIRequest
path:/foo,
GET:<QueryDict: {}>, 
POST:<QuestDict: {}>,
...
>
(Epdb) request.session.session_key
'i31kq7lljj3up5v7hbw9cff0rga2vlq5'
(Epdb) list
 85         raise some_error.CustomError()
 86 
 87     # Example login view
 88     def login(request, username, password):
 89         import epdb; epdb.serve()
 90  ->     return my_login_method(username, password)
 91
 92     # Example view to show session key
 93     def get_session_key(request):
 94         return request.session.session_key
 95

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...