دفع سياق في البرامج النصية والأصداف
شغّل التعليمات البرمجية خارج الطلب باستخدام app_context.
دفع سياق في البرامج النصية والأصداف درس مجاني في Flask Academy على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Flask Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Flask Academy 4 دروس في المجموع.
بعض أجزاء هذا الدرس لم تُترجم بعد وتظهر باللغة الإنجليزية.
Outside the Web
Sometimes you run Flask code with no request, like a script that seeds the database. There is no context, so the usual proxies fail.
The Telltale Error
Run such code and Flask raises RuntimeError: working outside of application context. It is telling you no app context is active.
Push It Yourself
Fix it by pushing one with app.app_context(). Wrap your code in a with block and current_app starts working again.
with app.app_context():
print(current_app.name)What the with Block Does
Entering the with block pushes the context, and leaving it pops the context. You never have to clean up by hand.
Now Extensions Work
Inside the block, extensions bound to the app behave normally. You can run db.create_all() or query models from a plain script.
with app.app_context():
db.create_all()Need a Fake Request?
To exercise code that reads request, push a test request context with test_request_context instead of an app context.
with app.test_request_context("/hello"):
print(request.path)The Flask Shell
The flask shell command opens a Python shell with an app context already pushed, so you can poke at your app interactively.
flask shellCLI Commands Too
Custom flask commands you register also run inside an app context automatically, so seed and admin scripts just work.
@app.cli.command()
def seed():
db.create_all()Match the Right Context
Pick by need: use app_context when you only touch the app or database, and a request context when your code reads request data.
Keep It Scoped
Push contexts in a tight with block, not for the whole script. Smaller scope means clearer code and predictable teardown.
Why This Matters
Pushing contexts lets you reuse app logic in migrations, cron jobs, and tests, not just inside live web requests.
Quick Check
Let us nail the fix for the context error.
Recap
No request? Push one. Use app_context for app and database work, test_request_context for request data, and let flask shell handle it for you. 🎉
الأسئلة الشائعة
هل درس «دفع سياق في البرامج النصية والأصداف» مجاني؟
نعم — نص درس «دفع سياق في البرامج النصية والأصداف» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Flask Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Flask Academy 4 دروس في المجموع.
ماذا ستتعلم في «دفع سياق في البرامج النصية والأصداف»؟
شغّل التعليمات البرمجية خارج الطلب باستخدام app_context. تتمرن على Flask Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Flask Academy؟
لا تُشترط خبرة سابقة. Flask Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.
كم من الوقت يستغرق درس «دفع سياق في البرامج النصية والأصداف»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Flask Academy هذا؟
نعم. كل درس في Flask Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- سياق التطبيق مقابل سياق الطلب
- current_app والكائن g
- المحليات السياقية وأمان الخيوط
- دفع سياق في البرامج النصية والأصداف